elasticsearch查询语法

pdtvr36n  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(431)

我有一个索引,Map如下

"mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "id": {
        "type": "integer"
      },
      "is_active": {
        "type": "boolean"
      },
      "attributes": {
        "dynamic": true,
        "properties": {
          "subjects": {
            "type": "integer"
          },
          "occupation": {
            "type": "integer"
          }
        }

现在我想得到所有的文件与职业=4和名称不是像'测试'和是\ u积极=真我写了下面得到所有的文件与是\ u积极=真和职业4,但我不知道如何筛选出文件名称包含'测试'

{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "terms": {
                  "audience_attributes.occupation": [
                    4
                  ]
                }
              }
            ]
          }
        },
        {
          "terms": {
            "is_active": [
              true
            ]
          }
        }
      ]
    }
  }
}

我正在使用elasticsearch 7.9

63lcw9qa

63lcw9qa1#

我想我明白了

{
  "query": {
    "bool": {
      "must_not": {
        "wildcard": {
          "name": {
            "value": "*TEST*"
          }
        }
      },
      "must": [
        {
          "bool": {
            "should": [
              {
                "terms": {
                  "audience_attributes.occupation": [
                    4
                  ]
                }
              }
            ]
          }
        },
        {
          "terms": {
            "is_active": [
              true
            ]
          }
        }
      ]
    }
  }
}

相关问题