首页 > 解决方案 > 如何在特定 ID 上设置不条件以不在 DSL 查询中搜索

问题描述

这是elasticsearch的字典模式 {'id': 3},{'id': 4},{'id': 5},{'id': 6}

以下是搜索“Country Owner.id.keyword”和“Territory Owner.id.keyword”的查询

a = {'from': 0, 'size': 200,'query': {
    'bool': {
      'should': [                              
        {
          'terms': {
            'Country Owner.id.keyword': [
              'ABC101'
            ]
          }
        },
        {
          'terms': {
            'Territory Owner.id.keyword': [
              'ABC101'
            ]
          }
        }
      ]
    }
  }
}

标签: elasticsearchdsl

解决方案


您可以在子句中使用术语查询must_not

{
  "query": {
    "bool": {
      "should": [
        {
          "terms": {
            "Country Owner.id.keyword": [
              "ABC101"
            ]
          }
        },
        {
          "terms": {
            "Territory Owner.id.keyword": [
              "ABC101"
            ]
          }
        }
      ],
      "must_not": {
        "terms": {
          "id": [
            3,
            4,
            5
          ]
        }
      }
    }
  }
}

推荐阅读