elasticsearch - 匹配同一字段中的多个值
问题描述
我 1. [5463, 3452] , 2. [5467, 3452]
在映射中有“路线”字段作为长类型(我在该示例中存储值数组)。在以下查询中,我想检索与同一记录中的 5463、3452 匹配的数据
GET /flight_routes/_search
{
"query": {
"bool": {
"filter": {
"terms": {
"routes": [5463, 3452]
}
}
}
}
}
但它正在返回与任一值匹配的文档。我是否必须将映射类型迁移到嵌套来处理这个或任何其他方式来通过查询本身获取它?
解决方案
您可以将terms_set
查询与minimum_should_match_script
返回数组长度的a 一起使用
POST /flight_routes/_search
{
"query": {
"terms_set": {
"routes" : {
"terms" : [5463, 3452],
"minimum_should_match_script": {
"source": "params.nb_terms",
"params": {
"nb_terms": 2
}
}
}
}
}
}
推荐阅读
- c++ - C++ 链表覆盖以前的数据
- c# - Wcf auto-host que permite conexiones a través de Internet
- c++ - 在协程句柄上调用destroy会导致段错误
- excel - 使用 SAP GUI 脚本和 VBA 处理 SAP 错误
- http - 传输中的加密:HTTP 到 HTTPS
- python - 从两个列表创建字典,并添加具有相同键的值
- selenium - 如何使用 chromedriver 删除错误?每次都会出现以下错误(python文件和驱动都在同一个文件夹中)
- python-3.x - xclip 和 xsel - FileNotFoundError: [Errno 2]
- c - Do/while 循环中的分段错误
- python - 无法使用 python BeautifulSoup 获取整个 HTML