У нас есть документы с (упрощенной) структуры, как показано здесь, в Elasticsearch:Join/Объединить Elasticsearch результаты
{ _id: ..., patientId: 4711, text: "blue" }
{ _id: ..., patientId: 4711, text: "red" }
{ _id: ..., patientId: 4712, text: "blue" }
{ _id: ..., patientId: 4712, text: "green" }
{ ... }
Как я могу создать запрос, чтобы найти все документы, содержащие текст blue
и red
в пределах Те же пациент.
В приведенном выше примере я ожидаю, что итоговый набор из двух документов с patientId 4711
(содержит blue
и red
).
Потенциальные стратегии решения могут быть:
- Выполнить два запроса и «Join» результаты позже с помощью логики приложения.
- Выполнение отдельных запросов на основе предыдущего списка пациентов. Только возможно, если число потенциальных пациентов невелико.
Есть ли лучшие способы (идеальный один запрос) для обработки этого прецедента?
Не уверен, что ответы вопрос ОП, поскольку это будет работать только там, где существовало бы в том же документе, не так ли? – samjudson
Нет, это, к сожалению, не работает. Задача состоит в том, что термины не существуют в одном документе. – user3218367
Я неправильно понял вопрос, поэтому обновил ответ, чтобы проверить http://www.elastic.co/guide/en/elasticsearch/guide/current/top-hits.html –