简体   繁体   English

Elasticsearch query_string和term组合不起作用

[英]Elasticsearch query_string and term combination doesn't work

I've written the following query in order to search documents which have "test" in "message" field AND their length is between 20 and 200 AND none of "user*" are "admin" AND "user3" to "user20" are NULL all sorted by "date" . 我编写了以下查询,以便搜索have "test" in "message" field文档, have "test" in "message" field their length is between 20 and 200 none of "user*" are "admin" "user3" to "user20" are NULL全部sorted by "date"

{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "test",
            "default_field": "message"
          }
        },
        {
          "term": {
            "user20": "NULL"
          }
        },
        {
          "term": {
            "user19": "NULL"
          }
        },
        {
          "term": {
            "user18": "NULL"
          }
        },
        {
          "term": {
            "user17": "NULL"
          }
        },
        {
          "term": {
            "user16": "NULL"
          }
        },
        {
          "term": {
            "user15": "NULL"
          }
        },
        {
          "term": {
            "user14": "NULL"
          }
        },
        {
          "term": {
            "user13": "NULL"
          }
        },
        {
          "term": {
            "user12": "NULL"
          }
        },
        {
          "term": {
            "user11": "NULL"
          }
        },
        {
          "term": {
            "user10": "NULL"
          }
        },
        {
          "term": {
            "user9": "NULL"
          }
        },
        {
          "term": {
            "user8": "NULL"
          }
        },
        {
          "term": {
            "user7": "NULL"
          }
        },
        {
          "term": {
            "user6": "NULL"
          }
        },
        {
          "term": {
            "user5": "NULL"
          }
        },
        {
          "term": {
            "user4": "NULL"
          }
        },
        {
          "term": {
            "user3": "NULL"
          }
        }
      ],
      "filter": [
        {
          "range": {
            "length": {
              "gte": 20,
              "lte": 200
            }
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "user1": "admin"
          }
        },
        {
          "term": {
            "user2": "admin"
          }
        },
        {
          "term": {
            "user3": "admin"
          }
        },
        {
          "term": {
            "user4": "admin"
          }
        },
        {
          "term": {
            "user5": "admin"
          }
        },
        {
          "term": {
            "user6": "admin"
          }
        },
        {
          "term": {
            "user7": "admin"
          }
        },
        {
          "term": {
            "user8": "admin"
          }
        },
        {
          "term": {
            "user9": "admin"
          }
        },
        {
          "term": {
            "user10": "admin"
          }
        },
        {
          "term": {
            "user11": "admin"
          }
        },
        {
          "term": {
            "user12": "admin"
          }
        },
        {
          "term": {
            "user13": "admin"
          }
        },
        {
          "term": {
            "user14": "admin"
          }
        },
        {
          "term": {
            "user15": "admin"
          }
        },
        {
          "term": {
            "user16": "admin"
          }
        },
        {
          "term": {
            "user17": "admin"
          }
        },
        {
          "term": {
            "user18": "admin"
          }
        },
        {
          "term": {
            "user19": "admin"
          }
        },
        {
          "term": {
            "user20": "admin"
          }
        }
      ]
    }
  },
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    }
  ]
}

without "user3" to "user20" are NULL condition the query works fine ie if I erase all corresponding parts in query. 没有"user3" to "user20" are NULL条件查询工作正常,即如果我擦除查询中的所有相应部分。 However, when I add those again, I get 0 results. 但是,当我再次添加它时,我得到0结果。 I'm sure I have documents meeting the criteria. 我确信我的文件符合标准。

What's the problem? 有什么问题? Any suggestions? 有什么建议么?

The question is: How you defined the null value in the mapping? 问题是:如何在映射中定义空值? As you wrote in query it will work only if you set "null_value": "NULL" in the mapping. 正如您在查询中所写的那样,只有在映射中设置“null_value”:“NULL”时才会起作用。 Other way you can use "exists" or "missing" queries like : "exists" : { "field" : "user20" } Can you provide the example of document please? 其他方式你可以使用“存在”或“缺少”的查询,如:“存在”:{“字段”:“user20”}你能提供文件的例子吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM