[英]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.