es查询简单场景问题小记
需求背景:将订单表数据同步至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查询简单场景问题小记相关推荐
- hbase和es在搜索场景的应用
背景 最近有个简单的需求,离线数据挖掘得出的标签需要支持online的查询,查询场景比较简单,支持按照单个id或者多个id批量查询,tp99需要在200ms,批量的时候id 集合的大小不会超过1000 ...
- ES搜索引擎-简单入门
转自:https://www.cnblogs.com/ywzq/p/5591972.html 基本概念: 索引Index es吧数据放到一个或者多个索引中,如果用关系型数据库模型对比,索引的地位与数据 ...
- es查询-统计总数以及深度分页
一.查询总数 1. ES 查询 hits 统计总数不准? 当我们使用 ES 的时候,有时会比较关心匹配到的文档总数是多少,所以在查询得到结果后会使用 hits.total.value 这个值作为匹配 ...
- 【236期】ElasticSearch 进阶:一文全览各种 ES 查询在 Java 中的实现
点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...
- ElasticSearch进阶:一文全览各种ES查询在Java中的实现
ElasticSearch多种查询操作 前言 1 词条查询 1.1 等值查询-term 1.2 多值查询-terms 1.3 范围查询-range 1.4 前缀查询-prefix 1.5 通配符查询- ...
- ES 查询数据的工作原理是什么?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://8rr.co/GsAa 面试题 ...
- es 删除数据_es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?...
面试题 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗? 面试官心理分析 问这个,其实面试官就是要看看你了解不了解 es 的一些基 ...
- ES(三)es查询语法
一.介绍:语法GET /索引/类型/_search 查询条件,这个查询条件有两种写法, 一种是在GET的url中指定参数:这种方法比较简单,如查询所有 GET /wtyy-test/u ...
- docker安装es+mac安装Kibana工具+es查询语法笔记
一.docker安装es 1.下载镜像 docker pull elasticsearch:7.9.0 下载完后,查看镜像 docker images 2.启动镜像 docker network ...
最新文章
- Centos7通过yum安装最新MySQL
- python反转列表_Python实现list反转实例汇总
- nodejs 本地php服务器,Nodejs搭建本地http服务器
- 我喜欢的一首歌--《幸福的瞬间》
- Eclipse 控制console
- python决策树逻辑回归_百面机器学习(逻辑回归以及决策树,leetcode)
- 部门研发linux sysfs (2)部门研发
- Shell 常用积累
- pku1177 Picture(矩形外围总周长)
- 20200614每日一句
- 单片机c语言常用的语句有几条,单片机C语言教程-基础语句
- android 导入 苹果手机,安卓手机文件怎么传到苹果手机
- snap7库C++版本对PLC数据的读写
- java输入日期计算天数_Java输入日期得到天数
- 1143 Lowest Common Ancestor
- java木马编码,深度好文:解码“深度伪装”的ZeuS网银木马
- 新的抗VEGF药物——阿柏西普ELISA 试剂盒相关研究
- Mina Kimchi SNARK 代码解析
- 成才之路杂志社成才之路编辑部成才之路杂志2022年第33期目录
- 射影几何 -- 空间射影几何 3
热门文章
- 通过getPixel();和通过bmp.getPixels();方法遍历整张图片的效率比较。
- access统计班级人数_Excel中怎么快速统计成绩表中分数段人数 - 卡饭网
- JavaScript权威指南7(四) 第十一章 JavaScript 标准库
- 〔王鹰教程五〕和弦的分类记忆法
- 台积电、高通“示好”华为:恢复供货?
- Java Grammar:数据类型
- Python量化:评估投资组合的收益率和风险
- halcon学习_超人启蒙班10-20课
- 2020.04.08【NOIP普及组】模拟赛C组24 总结
- “二进制负数 补码右移和原码算术右移 产生的真值偏差”分析