美文网首页
ES实现模糊搜索

ES实现模糊搜索

作者: gigglesoso | 来源:发表于2021-04-20 15:14 被阅读0次

最近使用ES时,有一个简单的需求,要求实现按照某个字段实现类似mysql中的like查询。
这里记录下实现方式。
这里java的api使用的是RestHighLevelClient,RestHighLevelClient从字面意思理解就是restful风格的高级别的客户端,底层封装的是一个http连接池,当需要执行 update、index、delete操作时,直接从连接池中取出一个连接,然后发送http请求到ElasticSearch服务端,服务端基于Netty接收请求。新版本的elasticsearch java client 都推荐用RestHighLevelClient去连接ES集群。
以下为实现方式:
这里要实现模糊匹配的字段为:plateNo(业务上表示车牌号)
以下是一开始的实现方法。plateNo字段type为text,现在保存了一条值为京A00000的数据

boolQueryBuilder.must(QueryBuilders.wildcardQuery("plateNo", ("*京A00000*")));

刚开始时候一直无法实现,可以搜索 京 查询出数据;或者搜索 A00000 查询到数据,但是使用全部 京A00000 查询数据为空。
后来确定原因,因为为text,所以这个字段在保存时会分词,所以索引中不会有 京A00000,因此解决思路就是该字段type指定为keyword,同时使用查询时指定查询时使用keyword,如下。
boolQueryBuilder.must(QueryBuilders.wildcardQuery("plateNo.keyword", ("京A00000")));
解决问题。

相关文章

  • ES实现模糊搜索

    最近使用ES时,有一个简单的需求,要求实现按照某个字段实现类似mysql中的like查询。这里记录下实现方式。这里...

  • ElasticSearch源码本地调试指南

    由于ES是当前搜索系统的标杆,在做搜索系统时,有时候需要拿ES的实现方式来作为我们的搜索系统实现方式的参考,这时就...

  • Elasticsearch 实现模糊搜索

    1、match query实现模糊搜索,该方式会对匹配文本进行分词然后匹配分词后的每个词项,匹配操作有OR和AND...

  • 166Elasticsearch 基础入门--开发elastic

    elasticsearch 简介 不了解 elasticsearch 的人都以为 Es 只能进行模糊搜索,其实不仅...

  • 纯前端实现模糊搜索

    匆匆完成,待整理。。。 一、前置知识 模糊查询一般都是后台来做的,我们只需要调用接口,而且后台做这个是非常的方便,...

  • js 实现本地模糊搜索

    前端实现模糊搜索 indexOf、split 、match、test indexOf方法 语法:stringObj...

  • 2018-07-20-ElasticSearch-搜索建议实现

    本文将会完整的讲述ES中搜索建议的程序实现。在网上搜索的教程当中大部分都是使用的ES的TransportClien...

  • 38、基于completion suggest实现搜索提示

    主要内容:基于completion suggest实现搜索提示 completion,es会构建用于进行前缀搜索的...

  • es读优化

    es搜索数据 es搜索数据流程 es读写流程示意图 分布式搜索示意图image.png es的几种搜索类型 QUE...

  • ElasticSearch入门:es集群搭建

    一、啰嗦几句: Es是目前主流的开源搜索引擎之一,ES基于Lucene实现,同时实现了一套自己的选举调度机制,使用...

网友评论

      本文标题:ES实现模糊搜索

      本文链接:https://www.haomeiwen.com/subject/tjdnlltx.html