elasticsearch,query-builder,elasticsearch-jest,Java,elasticsearch,Query Builder,Elasticsearch Jest" /> elasticsearch,query-builder,elasticsearch-jest,Java,elasticsearch,Query Builder,Elasticsearch Jest" />

Java 无法使用查询术语从弹性搜索中查询字母数字字段

Java 无法使用查询术语从弹性搜索中查询字母数字字段,java,elasticsearch,query-builder,elasticsearch-jest,Java,elasticsearch,Query Builder,Elasticsearch Jest,我试图使用TERMS query从索引中查询字母数字值,但它没有给出输出 查询: { "size" : 10000, "query" : { "bool" : { "must" : { "terms" : { "caid" : [ "A100945","A100896" ] } } } }, "fields" : [ "acco", "bOS", "aid", "TTl", "caid"

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

查询:

{
  "size" : 10000,
  "query" : {
    "bool" : {
      "must" : {
        "terms" : {
          "caid" : [ "A100945","A100896" ]
        }
      }
    }
  },
  "fields" : [ "acco", "bOS", "aid", "TTl", "caid" ]
}
我想获取所有caid为A100945或A100896的条目

同样的查询也适用于数字字段

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

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

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

请帮忙

问候,,
Mik

如果您尚未自定义
caid
-字段的映射/分析,则您的值将被索引为
a100945
a100896
(注意小写)

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


这是一个非常常见的问题,本文将对此进行详细解释。

您最好使用匹配查询。匹配查询的分析方法[应用默认分析器和查询]如下

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