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语句的用法。最好、最有效的方法是在索引时计算该字段并将其存储在文档中。最好、最有效的方法是在索引时计算该字段并将其存储在文档中。