Реляционные данные запросов Elasticsearch - PullRequest
0 голосов
/ 26 мая 2020

У меня два разных индекса на сервере Elasticsearch. В индексе A в документе есть поля «date» и «fieldX», а в индексе BI - поля «date» и «fieldY».

Элемент даты является отношением 1: 1, что означает, что для каждой даты есть один документ в индексах A и B. Я хочу подсчитать документы со значением X для «fieldX» и значением Y для «fieldY». "с совпадающими датами.

Я знаю, что elasticsearch не предназначен для таких запросов, но я не могу изменить структуру данных в этом случае.

1 Ответ

1 голос
/ 26 мая 2020

Поскольку в поиске elasti c нет объединений, один запрос не может проверять записи из обоих индексов. Если вы можете изменить сопоставление, вы можете найти сопоставление вложенного типа и сопоставление родитель-потомок.

Как упоминалось в вашем вопросе, вы не можете изменить сопоставление индексов. Затем вам необходимо выполнить два отдельных вызова для каждого индекса или использовать _msearch для одновременной отправки нескольких запросов.

GET _msearch
{"index":"index85"}
{"query":{"term":{"date":"2020-05-26"}},"aggs":{"count":{"value_count":{"field":"date"}}}}
{"index":"index86"}
{"query":{"term":{"date":"2020-05-26"}},"aggs":{"count":{"value_count":{"field":"date"}}}}
...