簡體   English   中英

ElasticSearch - 按關鍵字字段長度過濾查詢

[英]ElasticSearch - filter query by length of keyword field

我想根據其中一個字段中的文本長度搜索 elasticsearch 索引。 我在 SO 上嘗試了各種答案,例如elasticsearch 按字符串字段的長度過濾,但它沒有用。 下面的查詢返回我的文檔,其值較長,如%230f72e5 我的查詢有什么問題?

我的映射:

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

我的查詢GET myindex/_search

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

要計算字符串的長度,您需要使用以下腳本

對於版本 7。 *

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

該查詢是錯誤的!
錯誤:文檔沒有字段值。 使用 doc[].size()==0 檢查文檔是否缺少字段!

正確的查詢是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM