我使用匹配查询搜索"request.method":"GET":
{
"query": {
"filtered": {
"query": {
"match": {
"request.method": "GET"
}
},
"filter": {
"bool": {
"must": [
...
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,Match查询可以获得结果,如下所示:

但问题是在使用Term查询时,没有结果.
更新查询以将"匹配"更改为"术语",并保持其他部分保持不变:
{
"query": {
"filtered": {
"query": {
"term": {
"request.method": "GET"
}
},
"filter": {
"bool": {
"must": [
...
Run Code Online (Sandbox Code Playgroud)
我认为Term查询是Match查询的"未分析"版本.如上图所示,至少有一条记录的"request.method"等于"GET".为什么上述Term查询没有结果?谢谢.

elasticsearch中term和match的区别
术语是一个精确的查询
匹配是一个模糊查询
该术语是完美匹配,即精确查询。搜索词在搜索之前不会被切分,所以我们的搜索词必须是文档切分集之一。假设我们要查找所有名为 Jesus Verma 的文档。
$curl -XGET http://localhost:9200/index/doc/_search?pretty -d
'{
"query":{
"term":{
"title": "Jesus Verma"
}
}
}'
Run Code Online (Sandbox Code Playgroud)
该匹配查询将首先分类搜索词。分词后,分词结果会一一匹配。因此,相较于term的精确搜索,match是分词匹配搜索,匹配搜索有两个功能相似的变体。一种是match_phrase。一种是 multi_match
$curl -XGET http://localhost:9200/index/doc/_search?pretty -d
'{
"query": {
"match": {
"content": "Banglore, India"
}
}
}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40781 次 |
| 最近记录: |