elasticsearch,aggregate,Stored Procedures,elasticsearch,Aggregate" /> elasticsearch,aggregate,Stored Procedures,elasticsearch,Aggregate" />

Stored procedures ElasticSearch存储过程

Stored procedures ElasticSearch存储过程,stored-procedures,elasticsearch,aggregate,Stored Procedures,elasticsearch,Aggregate,假设我有具有以下结构的文档: { name:"some_name", salary:INT_VAL, date:YYYY.dd.MMTHH:mm:sssZ, num_of_months:INT_VAL } 现在我想对elastic进行一个查询,它将选择按条件排序的前10个文档。 我该怎么做? 如果我想按标准排序,里面有一些逻辑,比如 if (num_of_months < 5) then criteria = salary*100 ; elsei

假设我有具有以下结构的文档:

{
    name:"some_name",
    salary:INT_VAL, 
    date:YYYY.dd.MMTHH:mm:sssZ,
    num_of_months:INT_VAL 
 }
现在我想对elastic进行一个查询,它将选择按条件排序的前10个文档。 我该怎么做? 如果我想按标准排序,里面有一些逻辑,比如

if (num_of_months < 5) 
 then criteria = salary*100 ;
elseif  criteria = salary*200; 
endif
sort_by_criteria()
if(月数<5)
那么标准=工资*100;
elseif标准=工资*200;
恩迪夫
按_标准对_进行排序()
执行a将使您能够对数据执行计算并按正确顺序返回:

GET /myindex/mytype/_search?pretty
{
 "sort" :{
    "_script" : {
       "type" : "number",
        "lang": "expression",
        "script" :  "doc['num_of_months'].value <  5 ? doc['salary']*100 : doc['salary']*200",
        "order":"desc"
            }
        },
  "size": 10
}
GET/myindex/mytype/\u搜索?很好
{
“排序”:{
“_脚本”:{
“类型”:“编号”,
“郎”:“表达式”,
“脚本”:“doc['num\u of_months'].值<5?doc['salary']*100:doc['salary']*200”,
“订单”:“描述”
}
},
“尺寸”:10
}
注意使用to do If语句。

执行a将使您能够对数据执行计算并按正确顺序返回:

GET /myindex/mytype/_search?pretty
{
 "sort" :{
    "_script" : {
       "type" : "number",
        "lang": "expression",
        "script" :  "doc['num_of_months'].value <  5 ? doc['salary']*100 : doc['salary']*200",
        "order":"desc"
            }
        },
  "size": 10
}
GET/myindex/mytype/\u搜索?很好
{
“排序”:{
“_脚本”:{
“类型”:“编号”,
“郎”:“表达式”,
“脚本”:“doc['num\u of_months'].值<5?doc['salary']*100:doc['salary']*200”,
“订单”:“描述”
}
},
“尺寸”:10
}

请注意执行If语句的用法。

最好、最有效的方法是在索引时计算该字段并将其存储在文档中。最好、最有效的方法是在索引时计算该字段并将其存储在文档中。