正在对下面的2个字段进行匹配搜索,但是如果ownerIdNo为null,则我不希望为此进行搜索。

{
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "idNo": "3504"
              }
            },
            {
              "match": {
                "ownerIdNo": "null"
              }
            }
          ]
        }
      }
    }

伪代码如下:
matchSearchFor(idNo);
if(ownerIdNo != null){
  matchSearchFor(ownerIdNo);
}

最佳答案

如果不能以 flex 方式添加,则不能添加-DSL这不是一种程序语言。

您想要选择文档(ownerIdNo为null或idNo“:” 3504“)。在elasticsearch中,您必须使用should子句(OR)。

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "idNo": "3504"
          }
        },
        {
          "bool": {
            "must_not": [ --> null fields are not stored in documents
              {
                "match": {
                  "ownerIdNo": "null"
                }
              }
            ]
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

关于elasticsearch - Elasticsearch中的空检查条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61662607/

10-10 18:23