Моя ситуация такова:
- 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.