编程语言
首页 > 编程语言> > java – 无法使用TERMS QUERY从ELASTIC SEARCH查询字母数字字段

java – 无法使用TERMS QUERY从ELASTIC SEARCH查询字母数字字段

作者:互联网

我试图使用TERMS QUERY从索引查询字母数字值,但它没有给我输出.

查询:

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

我想获得所有带有A100945或A100896的条目

相同的查询适用于NUmeric字段.

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

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

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

请帮忙.

问候,
MIK

解决方法:

如果您尚未自定义caid字段的映射/分析,那么您的值将被编入索引,例如: a100945,a100896(注意小写.)

术语查询不进行查询时文本分析,因此您将搜索与a100945不匹配的A100945.

这是一个非常常见的问题,本文在Troubleshooting Elasticsearch searches, for Beginners中对此进行了解释.

标签:java,elasticsearch,query-builder,jest
来源: https://codeday.me/bug/20190629/1321668.html