В чем причина «пустого ответа» при поиске через слишком много индексов эластичного поиска? - PullRequest
0 голосов
/ 05 июня 2019

Моя ситуация такова:

  • Elasticsearch 1.7.3 (не мигрировал в новую версию из-за сложности модификаций приложения, но это уже запланировано)
  • Много индексов на разных узлах (через узел племени)
  • Каждое имя индекса имеет такую ​​структуру, как index_type_prefilter1_prefilter2 prefilter2 может быть выполнен на уровне свойств объектов, тогда как prefilter1 не может

Мне нужно искать объекты, которые удовлетворяют нескольким условиям, таким как: все объекты, которые prefilter_1 в [x1, x2] и `prefilter_2 в [y1, y2, y3]

Я не хочу искать по всем индексам (их много, поэтому падение большинства сильно повлияет на скорость), поэтому я подготовил список индексов:

[
    "type_x1_y1", "type_x1_y2", "type_x1_y3",
    "type_x2_y1", "type_x2_y2", "type_x2_y3",
]

Проблема в том, что когда я пытаюсь выполнить запрос ко многим индексам (около 200), я получаю «curl: (52) Пустой ответ от сервера» (даже с CentOS 'curl' util), и, на мой взгляд, проблема именно в количество индексов в запросе приводит к тому же запросу с меньшим количеством индексов, которые вернули правильный ответ.

Где предупреждение в журнале эластичных поисков:

    [WARN ][http.netty ] [Mother Earth] Caught exception while handling client 
    http traffic, closing connection [id: 0x1433e26c, /127.0.0.1:46573 => 
    /127.0.0.1:9200] java.lang.IllegalArgumentException: invalid version 
    format:indices_list/OBJECTS/_SEARCH?IGNORE_UNAVAILABLE=TRUE HTTP/1.1

curl -XPOST 'http://127.0.0.1:9200/indices_list/objects/_search?ignore_unavailable=true' -d' {"query": {"bool": {"must": {"term": {"79": "300"}}}}, " размер ":" 10" } ' `

Я не могу проверить эту ситуацию в последней версии эластичного поиска. Было бы здорово, если бы я мог использовать регулярные выражения в индексах (я знаю о '*' и '-') что-то вроде type_ [x1, x2] _ [y1, y2, y3].

Я вижу несколько решений, чтобы преодолеть это:

Уменьшите число индексов с помощью маски, например type_x1_ , type_x2_ и фильтруйте по второму свойству в запросе, но есть небольшая вероятность того, что когда-нибудь количество свойств станет слишком большим. Разделите запрос на несколько индексов и затем объедините ответы. Кто-нибудь знает об этой проблеме? Может быть, есть какие-то количественные ограничения, длина запроса или что-то еще? Thx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...