Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 范围查询不适用于elasticsearch 6.1.2中的文本数字_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Text_Range_Textfield - Fatal编程技术网 elasticsearch,text,range,textfield,Java,elasticsearch,Text,Range,Textfield" /> elasticsearch,text,range,textfield,Java,elasticsearch,Text,Range,Textfield" />

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

Java 范围查询不适用于elasticsearch 6.1.2中的文本数字,java,elasticsearch,text,range,textfield,Java,elasticsearch,Text,Range,Textfield,我曾尝试在elasticsearch 6.1.2中搜索以下案例 我创建了一个带有文本类型的变量“rangeField”,并插入了以下记录 rangeField : "1" rangeField : "2" rangeField : "3" . . . rangeField : "12" 我尝试了以下测试用例 案例1: 使用范围查询从1到5进行搜索,返回的记录范围为1,11,12,2,3,4,5 案例2: 使用范围查询从1到11进行搜索,返回的记录范围为1,11 案例3:

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

我创建了一个带有文本类型的变量“rangeField”,并插入了以下记录

rangeField : "1"
rangeField : "2"
rangeField : "3"
    .
    .
    .
rangeField : "12"
我尝试了以下测试用例

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

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

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

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

我需要找到正确的范围

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

弹性搜索6.1.2


非常感谢您的帮助。

如果您将字段的数据类型
rangeField
text
更改为
integer
,则您可以执行所需的两个查询。将1索引为文本将具有与您试验的
范围([a-z])
相同的行为。但是,如果您要更改映射,修改
整数
中的
日期字段
数据类型,您将改进
术语查询
,以获得精确值:

{
     "query" :
       { "term" : { "rangeField" : 1 } } 
}
或范围查询:

{
    "query": {
        "range" : {
            "rangeField" : {
                "gte" : 10,
                "lte" : 20
            }
        }
    }
}

对我想使用terms query在单个字段@Lupanoide中搜索多个值看看这里我可以匹配字段,但我想通过使用范围查询进入范围但我的要求是将数字字段保存为文本字段我尝试的是terms query而不是Term query为什么需要将整数保存为文本?对于仅为文本的terms query不同的语法要在列表中进行更多的术语查询,请看这里