
Anatoly
10.10.2017
13:11:43
я про эластик.

Lupsick
10.10.2017
13:12:05
эластик – это сложно

Ярослав
10.10.2017
13:29:52

Anatoly
10.10.2017
13:33:19
@jarosluv
Fragment has_many Compilations (на самом деле сделано через through, но наверное это не важно)
Индекс делаю вот так scope :es_index, -> { includes(:compilations) }
Создаю метод:
def compilations_ids
compilations.pluck(:id)
end
маппаю его
indexes :compilations_ids, type: 'integer'
И мне нужно добаивить доп. фильтр в поиске фрагментов, который бы брал только те фрагменты, у которых есть compilations с определенным id (парамтер)

Google

Ярослав
10.10.2017
13:39:07
А просто
{
"query": {
"match": {
"compilations_ids": 777
}
}
}не работает?

Anatoly
10.10.2017
13:42:02
@jarosluv Не пробовал, сейчас попробую, я все фильтры мучал.
Работает, благодарю. Ну а вообще случаи, подобные моему, так же и реализуются? Через массив и query?

Ярослав
10.10.2017
13:45:55
Если просто отфильтровать по данным из массива, то можно так. Если нужны более сложные выборки по ассоциациям, то через nested.
https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html

Fedor
10.10.2017
13:45:56
https://www.elastic.co/guide/en/elasticsearch/guide/current/combining-filters.html
я делаю bool запрос вида:
# query: {
# "bool" : {
# "must" : [],
# "should" : [],
# "must_not" : [],
# "filter": []
# }
и там в filter можно множество условий задавать параллельно
в том числе и filter
filter: [
{
terms: {
type: ['Product', 'Service']
}
}
]
примерно так

Ярослав
10.10.2017
13:47:22
Само собой, если нужно фильтровать по нескольким условиям, то условия нужно объединять.

Fedor
10.10.2017
13:48:05
просто без объединения эластик чаще всего просто не нужен )
вполне хватает постргеса

Google

Anatoly
10.10.2017
13:48:27
@FedorKoshel Конечно, я так и использую, у меня там куча условий, просто вопрос был про именно такое.

Valentina
10.10.2017
13:54:45
#вакансия #backend #ruby #можно_удаленно #проектная_занятость #fulltime
http://rubyjobs.ru/vacancies/5117
✔️Город: #Москва, Воробьевы Горы/Ленинский проспект
✔️Формат работы: #Офис или #удаленно
✔️Занятость: #fulltime, гибкое начало рабочего дня (с 10 или 11 часов утра), на проект
✔️Зарплата: от 100000 до 150 000 на руки, по результатам интервью, вилка двигается в большую сторону, смотря какая квалификация.
?Всем привет! Ищу на проект Ruby разработчика (миддл, сеньор). Нужно допилить проект, работа в команде, сумму обсуждаем по итогам технического интервью
?Занятость до конца года, оформим официально по договору ГПХ. Возможно продление контракта и оформление в штат компании.
За подробностями, резюме - ко мне в личку.


Ярослав
10.10.2017
14:08:52
@FedorKoshel @m1neral Если Фёдор, говорил об использовании фильтров, то можно сделать так
{
"query": {
"bool": {
"filter": {
"terms": {
"compilations_ids": [777]
}
}
}
}
}Для отсечения неподходящих записей подойдёт ещё лучше.

Anatoly
10.10.2017
14:10:25
Меня смущает значение в виде массива. Ведь мой кейс - это всегда один id.

Fedor
10.10.2017
14:13:53
там, вроде не обязательно должен быть массив
"must_not" : {
"term" : {"price" : 30}
}
из доки
точно так же в фильтр запихнуть можно

Anatoly
10.10.2017
14:16:47
А в чем разница с query в моем кейсе?

Fedor
10.10.2017
14:17:35
не понял
bool это подзапрос, который лежит внутри query
и их можно вкладывать друг в друга еще
а внутри bool условия

Anatoly
10.10.2017
14:19:02
Сейчас сделано у меня через query-bool-must-match-compilations_ids: 777
Вы с @jarosluv предлагаете через фильтр сделать, в чем приципиальная разница на выходе будет?

Fedor
10.10.2017
14:20:31
bool можно мешать по разному с остальными запросами просто
если нужен только match то разницы нет

Anatoly
10.10.2017
14:20:55
Ну да, я о том же, спасибо.

Dm
10.10.2017
14:21:55
разница есть на самом деле
filter - не добавляет score для результатов и еще они кэшируются

Google

Dm
10.10.2017
14:23:04
по крайней мере в старых версиях ES так было
1.х
> Historically, queries and filters were separate components in Elasticsearch. Starting in Elasticsearch 2.0, filters were technically eliminated, and all queries gained the ability to become non-scoring.
в общем, мое замечание актуально только для 1.x
но идеологически - правильно использовать фильтр

Ярослав
10.10.2017
14:31:08
По идее оно и сейчас актуально https://www.elastic.co/guide/en/elasticsearch/reference/5.5/query-filter-context.html

Dm
10.10.2017
14:36:52
круто. а я не там читал

Anton
10.10.2017
15:17:28
https://www.ruby-lang.org/en/news/2017/10/10/ruby-2-5-0-preview1-released/

Alex
10.10.2017
15:22:02
Print backtrace and error message in reverse order if STDERR is unchanged and a tty. [Feature #8661] [experimental]
З - зачем?

Vasiliy
10.10.2017
15:23:12
А что за топ левел лукап?
А как классы топ левел?

Anton
10.10.2017
15:24:27

Alex
10.10.2017
15:25:05
yield_self - очень на pipe похож - только гораздо уродливее(

Anton
10.10.2017
15:25:42
ну и вот пример понятнее
https://github.com/rails/rails/issues/6931
шикарно
User::User::User::User::User::User::User::User::User::User

Vasiliy
10.10.2017
15:26:52
Спс

Anton
10.10.2017
15:27:08
ну как бы да
>> String::String::String
(irb):1: warning: toplevel constant String referenced by String::String
(irb):1: warning: toplevel constant String referenced by String::String
=> String

Google

Nikolay
10.10.2017
15:31:06
эмейзинг

Максим
10.10.2017
15:51:00
ребзи
как решаете задачу самый большой по группам в sql?
greatest-n-per-group которая

Danny
10.10.2017
15:53:31
Привет
Подскажите где копать, может кто сталкивался
Перехожу с главной на страницу.
Потом жму back в браузере
И не вижу контента главной)
Турболинки?
Решил, спасибо!) ?
(был кривой кусок кода js)

Hard
10.10.2017
17:40:51
Всем привет, у меня вопрос у кто нибудь имел опыт с GOIP шлюзом?

Amir
11.10.2017
03:40:11
Что за волшебная команда
gem pristine —all
фишку особо не понял, но решил некую проблему с rake
Ignoring bcrypt-3.1.11 because its extensions are not built. Try: gem pristine bcrypt —version 3.1.11

Oleg
11.10.2017
03:48:04
Бкрипт надо билдить судя по всему на локальной машине. Как минимум такое на ноде есть, подозреваю что под руби аналогично
Судя по всему эта команда билдит бкрипт

Максим
11.10.2017
05:51:33
Пацаны там 2.5.0

Oleg
11.10.2017
05:53:30
Не видно что-то

Anton
11.10.2017
05:55:41
Там пре 2.5.0 же

Alexander
11.10.2017
06:51:49
Эмм... они вкорячили бандлер и теперь он будет искаропке?

Roman
11.10.2017
07:26:14
талаадно

Google

Mark
11.10.2017
07:28:34
Всем привет
подскажите как подменить клиент elasticsearch при старте рельс?

Fedor
11.10.2017
07:30:03
__elasticsearch__.client = Elasticsearch::Client.new(options)
вообще в любом месте можно сделать

Mark
11.10.2017
07:30:24
о
спасибо

Fedor
11.10.2017
07:30:34
не за что

Mark
11.10.2017
07:32:02
NameError:
undefined local variable or method `elasticsearch' for main:Object

Fedor
11.10.2017
07:37:14
а ты модель то взял из эластика?
class Article < ActiveRecord::Base
include Elasticsearch::Model
end
Article.__elasticsearch__.client = Elasticsearch::Client.new host: 'api.server.org'
http://www.rubydoc.info/gems/elasticsearch-model/
дока в общем

Mark
11.10.2017
07:42:21
тут нет такого
ну может я пока что что-то не понимаю
тут юзается chewy и elasticsearch

Fedor
11.10.2017
07:43:07
а как он юзается?
просто json дергается что ли?
для него есть билиотеки, через которые он обычно и работает