Elasticsearch JAVA API для тега скрипта

Мне нужно запросить в elasticsearch сумму двух полей в документе, которые попадают в определенный диапазон.

Я пытаюсь создать Java API для приведенного ниже эластичного поискового запроса, но не могу понять, как включать теги скрипта и выбирать элементы документа, т.е. doc['maintenanceCost']. Любая помощь будет оценена по достоинству.

{
   "query": {
       "bool" : {
           "filter" : {
               "script" : {
                   "script" : "doc['price'].value + doc['maintenanceCost'].value  > 1000 && doc['price'].value + doc['maintenanceCost'].value  < 10000"     
           }
           }
       }
   }
}

В основном мне нужны документы, в которых сумма цены и enter code here стоимости обслуживания составляет от 1000 до 10000.

Я пробовал несколько запросов, таких как ScriptBuilders, но ни один из них не работал.


person Ramesh KM    schedule 22.08.2019    source источник


Ответы (1)


Для этого вы можете использовать QueryBuilders.scriptQuery() с объектом Script. В вашем случае это будет примерно так:

QueryBuilders.scriptQuery(
        new Script("doc['price'].value + doc['maintenanceCost'].value  > 1000 && doc['price'].value + doc['maintenanceCost'].value  < 10000")                  
    );

Более подробную информацию об этом методе можно найти здесь.

person Daantie    schedule 23.08.2019