ElasticSearch v: 5,3
У меня есть одно хранилище массива элементов в упругом поиске.
userId: "123"
items: [
{
"range": {
"from": 10,
"to": 30
},
"id": "1"
},
{
"range": {
"from": 20,
"to": 100
},
"id": "2"
},
{
"range": {
"from": 5,
"to": 90
},
"id": "3"
},
]
Это только одна запись. Рассмотрим это как несколько записей, которые содержат ключ элементов.
Теперь я хочу выполнить поисковый запрос с идентификатором, и это уважаемый диапазон. Итак, мой текущий запрос выглядит так
GET product/item/_search{
"query": {
"bool": {
"filter": [
{
"term": {
"items.id": "1"
}
},
{
"range": {
"items.range.from": {
"gte": 20,
"lte": 30
}
}
},
{
"range": {
"items.range.to": {
"gte": 20,
"lte": 30
}
}
},
]
}
}
}
В настоящее время это будет выполнять поисковый запрос, который имеет id = 1 и значения диапазона от> = 20 до <= 30. Таким образом, он вернет все записи, содержащие id = 2, а также диапазон от 20 до 30. даже если в других записях, если id = 1 отсутствует, он будет искать значения диапазона и будет возвращать записи, если диапазон соответствует. </p>
Вместо этого я хочу искать записи, которые имеют id = 1 и значение этого идентификатора должно быть от 20 до 30.
Итак, у меня вопрос: поддерживает ли упругий поиск этот тип запроса AND?