Elsaticsearch 6.3.1 предоставляет разные результаты на облаке и локально, несмотря на использование dfs_query_then_fetch. Запрос с использованием пакета pythonasticsearch - PullRequest
0 голосов
/ 12 ноября 2018

Я использую Elasticsearch для запроса данных. Я запрашиваю медицинский термин, а взамен получаю код болезни в качестве вывода. Вот мой пример запроса:

es.search(index="myindex", body={"query": {"match": {"text_field": "search_term"}}}, search_type='dfs_query_then_fetch')
# Expected output - ABC
# Local Output - ABC
# Output on Amazon EMR - XYZ

Проблема в том, что когда я запускаю его в облаке, мой вывод совершенно другой.

У меня точно такой же индекс на облаке и локально. Несмотря на то, что результаты на облаке странные. У нас есть экземпляр Amazon EMR, где я даже пытался пересоздать индекс. Но не повезло.

Локальная ОС - Ubuntu 16.0.4 ОС на Amazon EMR -Amazon Linux

Любая помощь будет очень признательна.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Для тех, кто ответил на мои вопросы, спасибо за усилия.

Я понял, в чем проблема.

В AWS запущен скрипт начальной загрузки, который запускает сервисasticsearch, а также параллельно запускает мой файл python создателя индекса.

В связи с этим несколько запросов теряются во время создания индекса, поскольку кластеру требуется некоторое время для запуска и запуска. Так что в идеале мой индекс создан частично и поэтому результаты меняются.

Надеюсь, что это будет полезно для тех, кто использует эластичный поиск в Amazon EMR.

Ура!

0 голосов
/ 12 ноября 2018

Попробуйте использовать параметр «предпочтения» при запросе данных. Примерно так:

es.search(index="myindex",
    body={"query": {"match": {"text_field": "search_term"}}},
    preference="_primary_first"
)

Обновление: Начиная с Elasticsearch 6.x, некоторые возможные значения, такие как _primary_first, устарели и будут полностью удалены в Elasticsearch 7.0

.
...