假设我的文件是这样的
{
"salary": {
"max": 1572,
"min": 682
},
"skills": [
"Modula-3",
"Max/MSP",
"Arduino",
"SPARK",
"PL/SQL",
"Processing",
"Go",
"Mathematica",
"Modula-2",
"IDL",
"Heron",
"Scheme"
],
"company": "Merck",
"experience": 0,
"role": "Airport Security Screener",
"cities": [
"Ahmedabad",
"Mangaluru",
"Malegaon",
"Bokaro Steel City",
"Vadodara",
"Kollam"
]
}
我想做一个查询,其中我将提供一组城市,并将根据交叉点的基数获得订购的文件。即假设我的城市集合为["Ahmedabad", "Mangaluru"]
,那么此查询与上述文档的交集的基数为2.我的查询应该是什么?
样本回复
{"_score": 4.0202227, "cities": ["Ahmedabad","Mangaluru","Visakhapatnam", "Vijayawada"]}
{"_score": 2.27, "cities": ["Ahmedabad","Visakhapatnam", "Vijayawada"]}
{"_score": 1.79, "cities": ["Mangalauru","Vijayawada", "delhi", "bombay"]}
我正在使用elasticsearch 5.2.2
答案 0 :(得分:0)
这样的事情对你有帮助吗?
{
"query": {
"function_score": {
"query": {
"match": {
"cities": "Ahmedabad Mangaluru"
}
},
"functions": [
{
"filter": {
"match": {
"cities": "Ahmedabad"
}
},
"weight": 1
},
{
"filter": {
"match": {
"cities": "Mangaluru"
}
},
"weight": 1
}
],
"score_mode": "sum"
}
}
}