Использование перколята для массовой индексации в asticsearch-ruby

В соответствии с этой проблемой, Flexiblesearch поддерживает использование Per аклята с индексом (один документ) или массовым (несколько документов). Для примера не приведено ни одного примера, поэтому я подхожу к названию проблемы, что эта функциональность была добавлена ​​5 лет назад.

К сожалению, я не могу найти никакой информации об этой функциональности, доступной в ruby ​​API,asticsearch-ruby.

Кто-нибудь знает, доступен ли он, или, возможно, есть пример кода?

Благодарю.

Обновить:

На этой странице описывается, как фильтроваться при индексации отдельного документа, и утверждается, что это возможно оптом. Теперь, как это сделать в asticsearch-ruby?

Похоже, что библиотека NEST может это сделать (см. Внизу страницы), если я захочу переписать свой проект в.Net.

2 ответа

Решение

В Ruby не должно быть особого подхода, кроме простого _bulk операция, определяющая _index как ваш индекс и как _type .percolator:

POST /_bulk
{"index":{"_index":"some_index","_type":".percolator","_id":"1"}}
{"query":{"match":{"whatever_field":"some value 1"}}}
{"index":{"_index":"some_index","_type":".percolator","_id":"2"}}
{"query":{"match":{"whatever_field":"some value 2"}}}
{"index":{"_index":"some_index","_type":".percolator","_id":"3"}}
{"query":{"match":{"whatever_field":"some value 3"}}}

Для отправки нескольких запросов на фильтрацию существует mpercolate, который первоначально был создан в результате массового запроса функций и в конечном итоге получил название multi percolate api. И я вижу, что asticsearch-ruby поддерживает это.

?percolate=* особенность для bulk кажется, нет в списке аргументов для _bulk и, фактически, для этого есть проблема: github.com/elastic/elasticsearch-ruby/issues/176.

ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: Я снова посмотрел на это, и я более склонен полагать, что эта функция была полностью удалена в ES 1.0.0, после проблемы с github для перепроектирования перколятора. Я не вижу конкретного заявления об этом удалении, но исходный код, связанный с массовой индексацией с percolator опция после этого редизайн был удален. Также в документации нигде не указана эта опция. Обычно, когда это происходит, это не упущение, но функциональность просто отсутствует. Все еще связано с документацией - не забывайте, что любым ресурсам, которые вы нашли в Интернете по этому поводу, не менее двух лет, и я бы взял их с небольшим количеством соли, прежде чем предположить, что они все еще действительны.

Я не удивлюсь, если вы протестируете это в Elasticsearch (без ruby, nest или любого другого клиента) с curl или почувствовать и увидеть, что это не работает. Я тестировал это в 1.6 только сейчас, и я не вижу функциональности.

В последней основной документации (в настоящее время не выпущенной версии Elasticsearch 6.x) есть раздел о перколяции нескольких документов. Это новая функциональность, запланированная к выпуску в 6.X, но не в кандидатах на выпуск 6.0.

Другие вопросы по тегам