我使用匹配查询搜索“ request.method”:“ GET”:
{
"query": {
"filtered": {
"query": {
"match": {
"request.method": "GET"
}
},
"filter": {
"bool": {
"must": [
...
正如预期的那样,Match查询可以获得结果,如下所示:
但是问题是使用Term查询时没有结果。
更新查询以将“ match”更改为“ term”,并保持其他部分不变:
{
"query": {
"filtered": {
"query": {
"term": {
"request.method": "GET"
}
},
"filter": {
"bool": {
"must": [
...
我认为字词查询是Match查询的“未分析”版本。如上图所示,至少有一个记录的“ request.method”等于“ GET”。为什么上述术语查询没有结果?谢谢。
假设您正在使用Standard Analyzer, GET
则get
当存储在索引中时。源文档仍将具有原始的“ GET”。
该match
查询将对搜索词使用相同的标准分析器,因此将匹配存储在索引中的内容。该term
查询不会将任何分析器应用于搜索项,因此只会在倒排索引中查找该确切项。
要在您的示例中使用术语查询,请将大写的“ GET”更改为小写的“ get”或更改映射,以便将request.method字段设置为not_analyzed
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句