我在映射中将“routes”字段作为long类型(我在该示例1. [5463, 3452] , 2. [5467, 3452]
中存储值的数组)。在以下查询中
想要检索与同一记录中的5463,3452匹配的数据
GET /flight_routes/_search
{
"query": {
"bool": {
"filter": {
"terms": {
"routes": [5463, 3452]
}
}
}
}
}
但它返回的文件与任何一个值相匹配。我是否必须将映射类型迁移到嵌套以处理此问题或 通过查询本身获得它的任何其他方式?
答案 0 :(得分:3)
您可以使用terms_set
query和minimum_should_match_script
来返回数组的长度
POST /flight_routes/_search
{
"query": {
"terms_set": {
"routes" : {
"terms" : [5463, 3452],
"minimum_should_match_script": {
"source": "params.nb_terms",
"params": {
"nb_terms": 2
}
}
}
}
}
}