Используя данные из текущей версии Elasticsearch: The Definitive Guide, то есть:Elasticsearch: как искать вычисляемых полей
[{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}, {
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums",
"interests": [ "music" ]
}, {
"first_name" : "Douglas",
"last_name" : "Fir",
"age" : 35,
"about": "I like to build cabinets",
"interests": [ "forestry" ]
}]
Я пытаюсь запустить простой расчет (я включен Groovy сценариев) с помощью данные запроса:
{
"query": {
"filtered": {
"filter": {
"range": {
"max_age": {
"gt": 150
}
}
}
}
},
"script_fields": {
"max_age": {
"script": "_source.age * 5"
}
}
}
Но ES не возвращает никаких данных. Как я могу выполнить поиск по вычисленным полям? Это даже лучше, если мне не нужно включать скрипты.
Вместо того чтобы давать MAX_AGE как определенное количество, можно использовать что-то вроде «max_age = DOC. field_a.values.max();» –
@ M.Prabhakaran можно вычислить максимальное значение значений в массиве внутри самого скрипта. – Val
Можете ли вы привести мне пример? –