需求背景:将订单表数据同步至es,实现根据订单名称、产品名称、客户姓名、客户手机号、备注、供应商姓名进行模糊查询

ps:整合springboot+RestHighLevelClient

关于操作es数据的工具类,网上一抓一大把,我也是随便找了文章,修修改改直接用的

这篇文章主要是想记录一下在查询时遇到的问题

1、关于多条件or查询,可以使用BoolQueryBuilder,must代表必须匹配的条件,should代表可匹配的条件,以下query语句的意思即为:查询数据必须满足匹配orgId的情况,但是name、telephone、remark三者匹配其一即可

BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("orgId", req.getOrgId())).should(QueryBuilders.matchPhraseQuery("name", req.getSearchWords())).should(QueryBuilders.wildcardQuery("telephone","*" + req.getSearchWords() + "*")).should(QueryBuilders.matchPhraseQuery("remark", req.getSearchWords())).minimumShouldMatch(1);

2、关于手机号模糊搜索,只靠分词是不能实现的,需要用到正则表达式查询wildcardQuery

QueryBuilders.wildcardQuery("telephone","*" + req.getSearchWords() + "*")

3、关于分词器

对于中文,大部分情况都喜欢用ik分词器,但是即使使用ik_maxword分词器也并不能实现所有情况都能查回来,比如“门店客户”可能会被分词器拆分为“门店”、“客户”、“门店客户”,你输入门,是无法查回来这条数据的,如果有这种场景,建议还是使用standard

4、关于使用match时搜索条件分词的情况

我发现我输入“门店”进行查询,会查询到查询field包含“**门**” 、“**店**”、“**门**店**”的情况,但是这种数据不在我的搜索目标内,所以可以使用matchPhraseQuery,matchPhraseQuery只能匹配门店两个词必须相邻的情景

es查询简单场景问题小记相关推荐

  1. hbase和es在搜索场景的应用

    背景 最近有个简单的需求,离线数据挖掘得出的标签需要支持online的查询,查询场景比较简单,支持按照单个id或者多个id批量查询,tp99需要在200ms,批量的时候id 集合的大小不会超过1000 ...

  2. ES搜索引擎-简单入门

    转自:https://www.cnblogs.com/ywzq/p/5591972.html 基本概念: 索引Index es吧数据放到一个或者多个索引中,如果用关系型数据库模型对比,索引的地位与数据 ...

  3. es查询-统计总数以及深度分页

    一.查询总数 1.  ES 查询 hits 统计总数不准? 当我们使用 ES 的时候,有时会比较关心匹配到的文档总数是多少,所以在查询得到结果后会使用 hits.total.value 这个值作为匹配 ...

  4. 【236期】ElasticSearch 进阶:一文全览各种 ES 查询在 Java 中的实现

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  5. ElasticSearch进阶:一文全览各种ES查询在Java中的实现

    ElasticSearch多种查询操作 前言 1 词条查询 1.1 等值查询-term 1.2 多值查询-terms 1.3 范围查询-range 1.4 前缀查询-prefix 1.5 通配符查询- ...

  6. ES 查询数据的工作原理是什么?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://8rr.co/GsAa 面试题 ...

  7. es 删除数据_es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?...

    面试题 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗? 面试官心理分析 问这个,其实面试官就是要看看你了解不了解 es 的一些基 ...

  8. ES(三)es查询语法

    一.介绍:语法GET /索引/类型/_search         查询条件,这个查询条件有两种写法, 一种是在GET的url中指定参数:这种方法比较简单,如查询所有 GET /wtyy-test/u ...

  9. docker安装es+mac安装Kibana工具+es查询语法笔记

    一.docker安装es 1.下载镜像 docker pull elasticsearch:7.9.0 下载完后,查看镜像 docker images ​​ 2.启动镜像 docker network ...

最新文章

  1. Centos7通过yum安装最新MySQL
  2. python反转列表_Python实现list反转实例汇总
  3. nodejs 本地php服务器,Nodejs搭建本地http服务器
  4. 我喜欢的一首歌--《幸福的瞬间》
  5. Eclipse 控制console
  6. python决策树逻辑回归_百面机器学习(逻辑回归以及决策树,leetcode)
  7. 部门研发linux sysfs (2)部门研发
  8. Shell 常用积累
  9. pku1177 Picture(矩形外围总周长)
  10. 20200614每日一句
  11. 单片机c语言常用的语句有几条,单片机C语言教程-基础语句
  12. android 导入 苹果手机,安卓手机文件怎么传到苹果手机
  13. snap7库C++版本对PLC数据的读写
  14. java输入日期计算天数_Java输入日期得到天数
  15. 1143 Lowest Common Ancestor
  16. java木马编码,深度好文:解码“深度伪装”的ZeuS网银木马
  17. 新的抗VEGF药物——阿柏西普ELISA 试剂盒相关研究
  18. Mina Kimchi SNARK 代码解析
  19. 成才之路杂志社成才之路编辑部成才之路杂志2022年第33期目录
  20. 射影几何 -- 空间射影几何 3

热门文章

  1. 通过getPixel();和通过bmp.getPixels();方法遍历整张图片的效率比较。
  2. access统计班级人数_Excel中怎么快速统计成绩表中分数段人数 - 卡饭网
  3. JavaScript权威指南7(四) 第十一章 JavaScript 标准库
  4. 〔王鹰教程五〕和弦的分类记忆法
  5. 台积电、高通“示好”华为:恢复供货?
  6. Java Grammar:数据类型
  7. Python量化:评估投资组合的收益率和风险
  8. halcon学习_超人启蒙班10-20课
  9. 2020.04.08【NOIP普及组】模拟赛C组24 总结
  10. “二进制负数 补码右移和原码算术右移 产生的真值偏差”分析