Я столкнулся с требованием запроса, согласно которому, учитывая список кортежей, мне нужно вернуть все документы, которые точно соответствуют обоим полям одного или нескольких кортежей.
Кортежи будут повторять следующее:
[{"field_A": value_1, "field_B": value_2}, {"field_A": value_3, "field_B": value_4}, ...]
Я могу написать запрос, который достигает этого, используя запрос bool; набор предложений must с двумя вложенными предложениями must, каждое из которых должно содержать один запрос запроса.
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"field_A": {
"value": "value_1"
}
}
},
{
"term": {
"field_B": {
"value": "value_2"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"field_A": {
"value": "value_3"
}
}
},
{
"term": {
"field_B": {
"value": "value_4"
}
}
}
]
}
},
...
]
}
Однако список кортежей, предоставленных в качестве параметра для запроса, может быть «бесконечно» длинным, и кажется, что это решение станет чрезвычайно многословным и неэффективным довольно быстро.
Есть ли другой стиль запроса, который я пропустил, который позволяет мне по существу выполнять запрос терминов, но по отношению к списку многополевых кортежей, а не к списку отдельных элементов?
Заранее спасибо за любые указатели!