首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python列表的弹性搜索查询

使用python列表的弹性搜索查询
EN

Stack Overflow用户
提问于 2020-07-25 17:04:42
回答 1查看 538关注 0票数 3

如何将列表作为查询字符串传递给match_phrase查询?

这样做是可行的:

{"match_phrase":{"requestParameters.bucketName":{“查询”:“xxx”}},

这并不意味着:

代码语言:javascript
复制
        {
            "match_phrase": {
                "requestParameters.bucketName": {
                    "query": [
                        "auditloggingnew2232",
                        "config-bucket-123",
                        "web-servers",
                        "esbck-essnap-1djjegwy9fvyl",
                        "tempexpo",
                    ]
                }
            }
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-06 18:39:00

match_phrase根本不支持多个值。

您可以使用should查询:

代码语言:javascript
复制
GET _search
{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "requestParameters.bucketName": {
              "value": "auditloggingnew2232"
            }
          }
        },
        {
          "match_phrase": {
            "requestParameters.bucketName": {
              "value": "config-bucket-123"
            }
          }
        }
      ]
    },
    ...
  }
}

或者,正如@Val指出的,是一个terms查询:

代码语言:javascript
复制
{
  "query": {
    "terms": {
      "requestParameters.bucketName": [
        "auditloggingnew2232",
        "config-bucket-123",
        "web-servers",
        "esbck-essnap-1djjegwy9fvyl",
        "tempexpo"
      ]
    }
  }
}

在确切的条件下,它的功能类似于OR

我假设1)所讨论的桶名是唯一的,2)您不是在寻找部分匹配。如果是这样的话,如果在bucketName上几乎没有任何分析器,那么甚至不需要match_phraseterms会做得很好。termmatch_phrase查询之间的区别很好地解释了here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63091114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档