我正在尝试从column1和column2获取数据,这两列都可以包含所请求的数据。我希望结果与column1的数据一起排序,然后是column2的数据
SQL查询:
从table_name中选择*,其中column1 ='first1'或column2 ='first1' 按column1,column2排序
column1 column2
first2 first1
first1 last1
first3 last3
last3 last4
first1 last4
column1 column2
first1 last1
first1 last4
first2 first1
我想获得类似结果的弹性查询。提前谢谢。
答案 0 :(得分:0)
您可以对数据使用自定义评分。我想这就是你想要的。通过使用此评分,第一个字段中包含ABC
的数据的得分将高于第二列中包含该数据的数据。
{
"query": {
"function_score": {
"query": {
"bool": {
"should": [
{
"match": {
"column_name": "ABC"
}
},
{
"match": {
"column_last_name": "ABC"
}
}
],
"minimum_should_match": 1
}
},
"script_score": {
"script": {
"params":{
"word" : "ABC"
},
"inline" : "if(_source.column_name.equals(word)){return 2;} else if(_source.column_last_name.equals(word)){return 1;}"
}
},
"boost_mode": "replace"
}
}
}