使用ElasticSearch查询

时间:2019-06-19 11:15:55

标签: elasticsearch kibana elastic-stack

我在检索所有文档时遇到问题,这些文档没有按字段值对应的其他日志。我将不胜感激。最容易解释的是一个示例:

我有以下5个文档:

DOC1:

{
     message: **Step1**,
     id: 100
}

DOC2:

{
     message: **Step2**,
     id: 100
}

DOC3:

{
     message: **Step1**,
     id: 200
}

DOC4:

{
     message: **Step2**,
     id: 300
}

DOC5:

{
     message: **StepX**,
     id: 400
}

因此,我想作为查询的响应,是所有文档,其中Step1没有对应的Step2,其中id值相同。在下面的示例中,这是(我想响应): DOC3:

{
     message: Step1,
     id: 200
}

到目前为止,我所尝试的并不是我想要的结果。这会按ID和升序返回文档数,但是由于我们还有许多其他步骤,因此不可行,并且计数为1的结果并不总是正确的。

GET index/_search
{
      "size": 0, 
      "aggs" : {
          "langs" : {
              "terms" : { 
                    "field" : "id",  
                    "size" : 10, 
                    "order": {
                      "_count": "asc"
                     }
               }
          }
     } 
}

更多详细信息 作为回应,我需要的文档,其中有2个文档与一个id字段相关(每个结果应该只有1个文档,且具有相关的id和message = Step1)。

1 个答案:

答案 0 :(得分:0)

尝试一下...

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "id": "x"
          }
        }
      ],
      "must_not": [
        {
          "exists": {
            "field": "message"
          }
        }
      ]
    }
  }
}