如何在开发工具查询中使用 "OR"

How to use "OR" in Dev Tool Query

嗨,贝娄搜索为我提供了日志,它同时包含 "value": "HB" 和 "value": "1234567" 因为,我正在使用术语,但是,我正在寻找什么如果这个匹配

("value": "HB" OR "value": "TR" ) AND "value": "1234567"

但不明白下面的操作方法, 谁能帮帮我

GET _search

{ "query": { "bool": { "must": [ { "match": {"log.file.path":"mylog.log" } }


     {
       "term": {
          "GPS-LOG.COMMAND": {
           "value": "HB"
         }
       }
     },
      {
      "term": {
          "GPS-LOG.IMEI": {
           "value": "1234567"
         }
       }
     }



   ],   "filter": {
     "range": {
       "@timestamp": {
         "gte": "now-10m"
       }
     }   }
     } }

乍一看,这似乎应该有一个简单的解决方案。但是,由于您使用的是 term 查询,因此一次只能搜索一个值。我不知道您的映射,但如果您使用的是文本字段,则不应使用术语查询。

但是,要使用 term 查询解决此问题,您必须使用 [ 创建 OR 运算符minimum_should_match 结合 应该.

见以下代码:

GET _search 
   { 
   "query":{ 
      "bool":{ 
         "must":[ 
            { 
               "match":{ 
                  "log.file.path":"mylog.log"
               }
            },
            { 
               "term":{ 
                  "GPS-LOG.IMEI":{ 
                     "value":"1234567"
                  }
               }
            },
            { 
               "bool":{ 
                  "should":[ 
                     { 
                        "term":{ 
                           "GPS-LOG.COMMAND":{ 
                              "value":"HB"
                           }
                        }
                     },
                     { 
                        "term":{ 
                           "GPS-LOG.COMMAND":{ 
                              "value":"TR"
                           }
                        }
                     }
                  ],
                  "minimum_should_match":1
               }
            }
         ],
         "filter":{ 
            "range":{ 
               "@timestamp":{ 
                  "gte":"now-10m"
               }
            }
         }
      }
   }
}