Closed mahuxiaozi closed 5 years ago
,<, between and 解析为string类型,会导致查询没有结果,这个需要优化
可以给一个sql例子吗
String sql = "select * from kaoqin where ALARMTIMELONG between 1425347697000 and 1425353754000 and xingming='小红' and age=13 limit 10";
解析后:
{ "from" : 0, "size" : 10, "query" : { "bool" : { "must" : [ { "range" : { "ALARMTIMELONG" : { "from" : "1425347697000", "to" : "1425353754000", "include_lower" : true, "include_upper" : true, "boost" : 1.0 } } }, { "term" : { "xingming" : { "value" : "小红", "boost" : 1.0 } } }, { "term" : { "age" : { "value" : "13", "boost" : 1.0 } } } ], "adjust_pure_negative" : true, "minimum_should_match" : "1", "boost" : 1.0 } }, "_source" : { "includes" : [ ], "excludes" : [ ] } }
时间字段和年龄都是“”引号括起来的,不是整型了,es中字段是整型的话查不出结果
String sql = "select * from kaoqin where ALARMTIMELONG between 1425347697000 and 1425353754000 and xingming='小红' and age=13 limit 10";
解析后:
{ "from" : 0, "size" : 10, "query" : { "bool" : { "must" : [ { "range" : { "ALARMTIMELONG" : { "from" : "1425347697000", "to" : "1425353754000", "include_lower" : true, "include_upper" : true, "boost" : 1.0 } } }, { "term" : { "xingming" : { "value" : "小红", "boost" : 1.0 } } }, { "term" : { "age" : { "value" : "13", "boost" : 1.0 } } } ], "adjust_pure_negative" : true, "minimum_should_match" : "1", "boost" : 1.0 } }, "_source" : { "includes" : [ ], "excludes" : [ ] } }
时间字段和年龄都是“”引号括起来的,不是整型了,es中字段是整型的话查不出结果
我还以为你说的是另一个问题呢,这个好像可以欸,我自己在es中直接用dsl查了一下,数字或者boolean类型的true和false写成字符串也是可以查的
又测了一下,发现是 "minimum_should_match" : "1",这个参数引起的,查询没有结果。在这个查询中没有or条件,不会有should查询,加上了这个参数不会返回结果,这个是不是个问题?
又测了一下,发现是 "minimum_should_match" : "1",这个参数引起的,查询没有结果。在这个查询中没有or条件,不会有should查询,加上了这个参数不会返回结果,这个是不是个问题?
应该是,我改一下
又测了一下,发现是 "minimum_should_match" : "1",这个参数引起的,查询没有结果。在这个查询中没有or条件,不会有should查询,加上了这个参数不会返回结果,这个是不是个问题?
你是什么版本的es,我重新编译一下插件
7.2.0以上的插件都已更新,感谢啦!!!
OK