您好,贝娄搜索向我提供了同时包含“值”:“ HB”和“值”:“ 1234567”的日志,因为我正在使用Term,但是,如果此匹配项,我正在寻找什么
("value": "HB" OR "value": "TR" ) AND "value": "1234567"
但不理解下面的操作, 谁能帮我
获取_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"
}
} }
} }
答案 0 :(得分:0)
乍一看,似乎应该有一个简单的解决方案。但是,由于您正在使用 term 查询,因此一次只能搜索一个值。我不知道您的映射,但是如果您使用的是文本字段,则不应该使用术语查询。
但是,要使用 term 查询解决此问题,您必须使用 minimum_should_match 与应结合使用来创建 OR 运算符。
请参见以下代码:
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"
}
}
}
}
}
}