我在映射中具有long类型的“routes”字段(我在示例1. [5463, 3452] , 2. [5467, 3452]
中存储值数组)。在以下查询中
想要检索与同一记录中的5463、3452匹配的数据
GET /flight_routes/_search
{
"query": {
"bool": {
"filter": {
"terms": {
"routes": [5463, 3452]
}
}
}
}
}
但是它正在返回与任一值匹配的文档。我是否必须将映射类型迁移到嵌套以处理此问题,或者
还有其他方法可以通过查询本身获取它吗?
最佳答案
您可以将 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
}
}
}
}
}
}
关于elasticsearch - 匹配同一字段中的多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50582836/