首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >范围查询不适用于elasticsearch 6.1.2中的文本数字

范围查询不适用于elasticsearch 6.1.2中的文本数字
EN

Stack Overflow用户
提问于 2018-03-13 19:48:34
回答 1查看 872关注 0票数 0

我曾尝试在elasticsearch 6.1.2中搜索以下案例

我已经创建了一个类型为text的变量"rangeField“,并插入了以下记录。

代码语言:javascript
运行
复制
rangeField : "1"
rangeField : "2"
rangeField : "3"
    .
    .
    .
rangeField : "12"

我尝试了下面的测试用例

案例1:使用从1到5的范围查询进行搜索,返回的记录为rangeField 1,11,12,2,3,4,5。

案例2:使用从1到11的范围查询进行搜索,返回的记录为rangeField 1,11。

案例3:使用从1到23的范围查询进行搜索,返回的记录为rangeField 1,11,12,2。

案例4:使用从1到30的范围查询进行搜索,返回的记录为rangeField 1,11,12,2,3。

我需要找到正确的范围,

我一直使用"rangeField“作为文本,因为为了支持术语查询,

弹性搜索6.1.2

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2018-03-13 20:54:21

如果将字段rangeField的数据类型从text更改为integer,则可以执行所需的两个查询。将索引1作为文本将具有与您实验过的相同的range([a-z])行为。但是,如果您要更改您的映射,在integer中修改dateField数据类型,您将达到提高term query以获得精确值的目的:

代码语言:javascript
运行
复制
{
     "query" :
       { "term" : { "rangeField" : 1 } } 
}

或者是一个range query

代码语言:javascript
运行
复制
{
    "query": {
        "range" : {
            "rangeField" : {
                "gte" : 10,
                "lte" : 20
            }
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49255394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档