文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820…
种一棵树最好的时间是十年前,其次是现在
我知道很多人不玩qq了,但是怀旧一下,欢迎加入六脉神剑Java菜鸟学习群,群聊号码:549684836 鼓励大家在技术的路上写博客
其实这个问题,也算不得是什么大问题,就是不知道的很坑,公司的搜索服务,本来不是我维护的,后面因为人员调动,给我维护了,然后他们用的竟然不是JPA,用的是RestHighLevelClient。这就很尴尬了,没有学过,然后稀里糊涂的用着。
如在a=1且b=2的数据中,找出c=1或者d=2的数据
那我可能会这样写,如果你是按照sql的思维的话
{"query": { "bool": { "must": [ {"match": { "a": "1", "b": "2" }} ], "should": [ {"match": { "c": "1" }, {"match": { "d": "2" }} ] }}} 复制代码
这样写的时候should是没有用的,这是新手可能犯的错误之一。 在编写查询条件的时候,不能用口头上的逻辑进行编写,而是要换成数学逻辑才能进行执行(数据库同理)。 如上例,数学逻辑应该是 (a==1&&b==2&&c==1)||(a==1&&b==2&&d==2)(java and c语言版),这样的结构去查询。
{"query": { "bool": { "should": [ {"match": { "a": "1", "b": "2", "c": "1" }} ], "should": [ {"match": { "a": "1", "b": "2", "d": "2" }} ] }}} 复制代码
或者这样
{ "query": { "bool": { "must": [ {"match": { "a": "1", "b": "2" }}, { "bool": { "should": [ {"match": {"c": 1}}, {"match": {"d": 2}} ] } } ] } } 复制代码
嗯,记录一下新手经常犯的错误,哈哈博主也是个新手菜鸡。
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是真粉。
创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见
六脉神剑 | 文 【原创】如果本篇博客有任何错误,请批评指教,不胜感激 !