ElasticSearch-多个匹配条件

ttp71kqs  于 2022-12-03  发布在  ElasticSearch
关注(0)|答案(1)|浏览(193)

我需要写一个复杂的场景,并想知道如何做到这一点-我有3个不同类型的条目如下
我需要查找具有completed的呼叫状态,但在某些情况下,具有completed的状态存储在2个条目中。
记录-1 [条件-1:当lastOutboundStatus为忙碌且lastInboundStatus已完成时]
注意:lastOutboundStatus应该为忙碌|也可以是其他状态,如无应答、拒绝

"lastOutboundStatus": {
  "status": "busy",
  "timeStamp": 1664945413238
 },
 "lastInboundStatus": {
  "status": "completed",
  "timeStamp": 1664945413238
 },

记录-2 [条件-2:当lastInboundStatus已完成且lastOutboundStatus不存在时]

"lastInboundStatus": {
  "status": "completed",
  "timeStamp": 1664945413238
 }

记录-3 [条件-3:当lastOutboundStatus完成时,“lastInboundStatus”可能存在或不存在,无关紧要-优先级为lastOutboundStatus是否完成]

"lastOutboundStatus": {
  "status": "completed",
  "timeStamp": 1664945413238
 }
"lastInboundStatus": {
  "status": "completed",
  "timeStamp": 1664945413238
 },

只需一个查询,我就需要满足3个条件-这样正确的记录就会出现。所以当我搜索状态完成时,所有上述3个记录都应该出现。
任何忍者都可以帮忙!
我是ElasticSearch的新手,需要一些大师的帮助

ttvkxqim

ttvkxqim1#

您可以使用下列OR查询:

POST test/_search
{
  "query": {
    "bool": {
      "minimum_should_match": 1,
      "should": [
        {
          "bool": {
            "filter": [
              {
                "term": {
                  "lastInboundStatus.status": "completed"
                }
              },
              {
                "terms": {
                  "lastOutboundStatus.status": [
                    "busy",
                    "other-status"
                  ]
                }
              }
            ]
          }
        },
        {
          "bool": {
            "filter": [
              {
                "term": {
                  "lastInboundStatus.status": "completed"
                }
              },
              {
                "bool": {
                  "must_not": {
                    "exists": {
                      "field": "lastOutboundStatus.status"
                    }
                  }
                }
              }
            ]
          }
        },
        {
          "term": {
            "lastOutboundStatus.status": "completed"
          }
        }
      ]
    }
  }
}

相关问题