不为失败找理由,要为成功找方法。

keyword类型的数字的大于小于查询

Elasticsearch | 作者 meowCoder123 | 发布于2022年05月27日 | 阅读数:485

现在有一组数据,其中resultChar是keyword类型,但其中有数字也有字符串,请问怎么能在大于小于查询的时候将其中的数字按照数字的类型进行大于小于的查询,结构如下

{
    "lisCheckItemList": [
        {
            "resultChar": "1",
            "itemName": "项目1"
        },
        {
            "resultChar": "2",
            "itemName": "项目2"
        },
        {
            "resultChar": "11",
            "itemName": "项目3"
        },
        {
            "resultChar": "22",
            "itemName": "项目4"
        },
        {
            "resultChar": "25",
            "itemName": "项目"
        },
        {
            "resultChar": "3",
            "itemName": "项目5"
        },
        {
            "resultChar": "阴性",
            "itemName": "项目6"
        }
    ]
}
结果:如果查询resultChar大于2的数据的话目前不会查询出resultChar为11的数据,因为现在的resultChar类型为keyword.但是因为resultChar里面有数字也有字符所以不可以使用数字的类型.请问有什么方法可以将keyword类型中的数字按照数字类型进行大于小于查询.
期待结果: 查询resultChar大于2的数据时会过滤掉小于2的并查询出大于2的数据(查询出resultChar为阴性的那个数据也可以,只要数字的查询是对的就可以)
 
已邀请:

Charele

赞同来自:

你这个"阴性",是固定的一种或几种吗?还是说随机的,不能确定有多少种类

Charele

赞同来自:

222.png

前提:“阴性”这种不能是数字开头
把特殊字符转成了特别数字99999,你也可以改成别的数字。
 
如果你同时想让“阴性”出现,查询改为bool查询,把99999加进去。
暂时只想到这个方法了,,, 
 
 
 
 

laoyang360 - Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

DELETE _ingest/pipeline/my_pipeline_20220529
PUT _ingest/pipeline/my_pipeline_20220529
{
"processors": [
{
"foreach": {
"field": "lisCheckItemList",
"processor": {
"convert": {
"field": "_ingest._value.resultChar",
"type": "integer",
"ignore_failure": true
}
}
}
}
]
}

DELETE test-20220529_02
PUT test-20220529_02
{
"settings": {
"default_pipeline": "my_pipeline_20220529"
},
"mappings": {
"properties": {
"lisCheckItemList": {
"type": "object",
"properties": {
"resultChar": {
"type": "keyword"
},
"itemName": {
"type": "keyword"
},
"resultprefix": {
"type": "integer"
}
}
}
}
}
}

PUT test-20220529_02/_doc/1
{"lisCheckItemList":[{"resultChar":"1","itemName":"项目1"},{"resultChar":"2","itemName":"项目2"},{"resultChar":"11","itemName":"项目3"},{"resultChar":"22","itemName":"项目4"},{"resultChar":"25","itemName":"项目"},{"resultChar":"3","itemName":"项目5"},{"resultChar":"阴性","itemName":"项目6"}]}

要回复问题请先登录注册