我正在尝试使用TERMS QUERY从索引查询字母数字值,但它没有给我输出。
查询:
{
"size" : 10000,
"query" : {
"bool" : {
"must" : {
"terms" : {
"caid" : [ "A100945","A100896" ]
}
}
}
},
"fields" : [ "acco", "bOS", "aid", "TTl", "caid" ]
}
我想获得所有带有A100945或A100896
的条目相同的查询适用于NUmeric字段。
我不打算使用QueryString / MatchQuery,因为我正在尝试构建可以为所有请求构建查询的通用查询构建器。因此,我希望仅使用TERMS查询来获取条目。
注意:我使用Java API org.elasticsearch.index.query.QueryBuilders来构建查询。
例如:QueryBuilders.termQuery(" caid"," [" A10xxx"," A101xxx"]")
请帮忙。
此致 MIK
答案 0 :(得分:3)
如果您尚未自定义caid
- 字段的映射/分析,那么您的值将被编入索引,例如: a100945
,a100896
(请注意小写。)
terms
- 查询不执行查询时文本分析,因此您将搜索与A100945
不匹配的a100945
}。
这是一个非常常见的问题,本文在Troubleshooting Elasticsearch searches, for Beginners上对此进行了解释。
答案 1 :(得分:0)
你最好使用匹配query.match查询分析[应用默认分析器和查询]如
QueryBuilders.matchQuery("caid", "["A10xxx", "A101xxx"]");