【问题标题】:Not able to Query alphanumeric fields from ELASTIC SEARCH using TERMS QUERY无法使用 TERMS QUERY 从 ELASTIC SEARCH 查询字母数字字段
【发布时间】:2014-05-23 11:45:27
【问题描述】:

我正在尝试使用 TERMS QUERY 从索引中查询字母数字值,但它没有给我输出。

查询:

{
  "size" : 10000,
  "query" : {
    "bool" : {
      "must" : {
        "terms" : {
          "caid" : [ "A100945","A100896" ]
        }
      }
    }
  },
  "fields" : [ "acco", "bOS", "aid", "TTl", "caid" ]
}

我想获取所有具有 caid A100945 或 A100896 的条目

同样的查询适用于 NUMeric 字段。

我不打算使用 QueryString/MatchQuery,因为我正在尝试构建可以为所有请求构建查询的通用查询构建器。因此,我希望仅使用 TERMS 查询来获取条目。

注意:我使用 Java API org.elasticsearch.index.query.QueryBuilders 来构建查询。

例如:QueryBuilders.termQuery("caid", "["A10xxx", "A101xxx"]")

请帮忙。

问候, 米克

【问题讨论】:

    标签: java elasticsearch query-builder elasticsearch-jest


    【解决方案1】:

    如果您没有为caid-字段自定义映射/分析,那么您的值将被索引为例如a100945, a100896(注意小写)

    terms-query 进行查询时文本分析,因此您将搜索与 a100945 不匹配的 A100945

    这是一个很常见的问题,在Troubleshooting Elasticsearch searches, for Beginners 上的这篇文章中有更多解释。

    【讨论】:

      【解决方案2】:

      你最好使用匹配查询。匹配查询被分析[应用默认分析器和查询]

      QueryBuilders.matchQuery("caid", "["A10xxx", "A101xxx"]");
      

      【讨论】:

        猜你喜欢
        • 2021-07-27
        • 2018-06-10
        • 2018-08-17
        • 2022-11-03
        • 2023-01-13
        • 2015-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多