我必须在条件2下编写一个搜索查询。
时间戳
目录
当我在下面这样的搜索查询中使用匹配时
{
"query":{
"bool":{
"must":{
"match":{
"directory":"/user/ayush/test/error/"
}
},
"filter":{
"range":{
"@timestamp":{
"gte":"2020-08-25 01:00:00",
"lte":"2020-08-25 01:30:00",
"format":"yyyy-MM-dd HH:mm:ss"
}
}
}
}
}
}
在筛选结果中,我得到目录为的记录 /user/ayush/test/error/
/user/hive/ /user/
但当我使用下面这样的术语时
{
"query":{
"bool":{
"must":{
"term":{
"directory":"/user/ayush/test/error/"
}
},
"filter":{
"range":{
"@timestamp":{
"gte":"2020-08-25 01:00:00",
"lte":"2020-08-25 01:30:00",
"format":"yyyy-MM-dd HH:mm:ss"
}
}
}
}
}
}
我没有得到任何结果,甚至没有目录值 /user/ayush/test/error/
1条答案
按热度按时间hfyxw5xn1#
匹配查询分析输入字符串并从中构造更基本的查询。
术语查询匹配精确的术语。
请参阅以下博客以获取详细信息:
那么,关于术语和匹配查询的问题呢
https://discuss.elastic.co/t/term-query-vs-match-query/14455
elasticsearch匹配与术语查询
字段值
/user/ayush/test/error/
分析如下:生成的令牌是:
索引数据:
使用术语查询搜索查询:
术语查询不会对搜索术语应用任何分析器,因此只会在倒排索引中查找确切的术语。所以要搜索准确的术语,你需要使用
directory.keyword
或更改字段的Map。术语查询的搜索结果: