如何在开发工具查询中使用 "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"
}
}
}
}
}
}
嗨,贝娄搜索为我提供了日志,它同时包含 "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"
}
}
}
}
}
}