elasticsearch - 在一组关键字中过滤关键字

标签 elasticsearch

在Elasticsearch 6.0+中,我想通过将结果限制为一个关键字字段来过滤结果,从而强制将该字段包含在一组关键字中。

当前,我在此示例中使用bool:

GET users/_search
{
  "query": {
    "bool": {
      "must": {
        "match": {
          "user_name": "alice"
        }
      },
      "filter": {
        "bool": {
          "should": [
            {"match": {"country": "italy"}},
            {"match": {"country": "france"}}
          ]
        }
      }
    }
  }
}

但是想象一下有50个国家。

有什么方法可以简化这个过程吗?类似于Python的country in ['italy', 'france']吗?

最佳答案

详细说明@suparshva的评论,可以将其重写:

GET users/_search
{
  "query": {
    "bool": {
      "must": {
        "match": {
          "user_name": "alice"
        }
      },
      "filter": {
        "terms": {
          "country": ["italy", "france"]
        }
      }
    }
  }
}

关于elasticsearch - 在一组关键字中过滤关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52490245/

相关文章:

elasticsearch - 通过嵌套对象查询/筛选在某些嵌套对象中获得意外结果

elasticsearch - 从MySQL加载数据到Elasticsearch

elasticsearch - 具有对象类型字段的Elasticsearch聚合

amazon-web-services - AWS Elasticsearch-建议为m4.large.elasticsearch实例创建多少个分片和副本

elasticsearch aggs 返回错误的计数

elasticsearch - 根据Elasticsearch中的最佳字段匹配进行搜索

elasticsearch - 删除屏蔽插件后,Kibana无法正常工作

java - 使用 ElasticSearch-Hadoop 构建项目时构建失败

elasticsearch - 如何在logstash grok模式中编写if条件?

php - PHP Elasticsearch “Set”映射