ElasticSearch -按关键字字段长度过滤查询

t1rydlwq  于 2022-12-17  发布在  ElasticSearch
关注(0)|答案(2)|浏览(326)

我想根据其中一个字段中的文本长度搜索ElasticSearch索引。我尝试了各种答案,如elasticsearch filter by length of a string field,但它没有工作。下面的查询返回我的文档与较长的值,如%230f72e5。我的查询有什么问题?
我的Map:

{
    "myindex": {
        "mappings": {
            "properties": {
                "colorcode": {
                    "type": "keyword"
                }

我的查询GET myindex/_search

{
    "query": {
        "bool" : {
            "must" : {
                "script" : {
                    "script" : "doc['colorcode'].size() < 5"
                }
            }
        }
    }
}
kknvjkwl

kknvjkwl1#

要计算字符串的长度,需要使用以下脚本

适用于版本7。*

{
  "query": {
    "bool": {
      "filter": {
        "script": {
          "script": {
            "source": "doc['colorcode.keyword'].value.length() < 5",
            "lang": "painless"
          }
        }
      }
    }
  }
}
euoag5mw

euoag5mw2#

查询错误!
错误:单据没有字段值!使用doc[].size()==0检查单据是否缺少字段!
正确的查询是:

{
    "query": {
        "bool" : {
            "must" : {
                "script" : {
                    "script" : "doc['colorcode'].size() > 0 && doc['colorcode'].value.length() < 5"
                }
            }
        }
    }
}

相关问题