在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

搜索字段长度大于2的数据

Elasticsearch | 作者 CanyiSama | 发布于2020年10月30日 | 阅读数:5716

版本v7.9.2,字段是keyword类型,以下是文档中看到的方法,执行没有报错也没有数据返回,还有一些更老的写法我就不贴了
 
GET test/_search
{
  "query": {
    "script": {
      "script": "doc['name'].length > 2"
    }
  },
  "size": 10

GET test/_search
{
  "query": {
    "script": {
      "script": "doc['name'].size() > 2"
    }
  },
  "size": 10
}
求教应该怎么写,最终的需求是长度在2到5之间的数据,谢谢~
已邀请:

BKing - Double non. Open source software and dreamer (English Français Japanese Korean ) learners

赞同来自: CanyiSama

如果你要进行筛选操作,你可以使用 filter
DELETE test_index

PUT test_index
{
"mappings": {
"properties": {
"name":{
"type": "keyword"
}
}
}
}

POST test_index/_bulk
{"index":{"_id":1}}
{"name":"BKing"}
{"index":{"_id":2}}
{"name":"Tom"}
{"index":{"_id":3}}
{"name":"Steven"}
{"index":{"_id":3}}
{"name":"Kn"}
{"index":{"_id":4}}
{"name":"M"}
{"index":{"_id":5}}
{"name":"Jack Smith"}

GET /test_index/_search

POST test_index/_search
{
"query": {
"bool": {
"filter": [
{
"script": {
"script": {
"lang": "painless",
"source": "doc['name'].value.length() >= 2 && doc['name'].value.length() <= 5"
}
}
}
]
}
}
}
希望以上回答对你有所帮助
 

weidong123 - 90后

赞同来自:

你这个为什么不单独新建一个字段,记录属性的长度呢

pony_maggie - 公众号:犀牛饲养员的技术笔记

赞同来自:

写入的时候就计算好符合条件的字段单独存储,查询的时候会简单很多

liuxg - Elastic

赞同来自:

你可以参阅读一下这篇文章: Elasticsearch:避免不必要的脚本 - scripting https://blog.csdn.net/UbuntuTo ... 61204

qiwu - 90后

赞同来自:

谢谢

qiwu - 90后

赞同来自:

挺好的问题

qiwu - 90后

赞同来自:

我还不会

qiwu - 90后

赞同来自:

测试一下

要回复问题请先登录注册