elasticsearch一个准实时的搜索引擎,基于lucene构建,它的主要强项还是在全文检索方面。工作中还是使用到了这部分功能,这里做一个简单的总结,可以使初次使用的人很快的配置和使用。
一、全文检索的概念
首先介绍全文检索的概念,就是对一篇文章进行索引,可以根据关键字搜索,类似于mysql里的like语句。
全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如”你们的激情是因为什么事情来的” 可能会被分词成:“你们“,”激情“,“什么事情“,”来“ 等token
这样当你搜索“你们” 或者 “激情” 都会把这句搜出来。
二、内置分词器
elasticsearch实现全文索引,首先要确定分词器,elasticsearch默认有很多分词器,你可以参考elasticsearch的官方文档。了解分词器主要是怎么实现的。
你可以使用
curl -XGET ‘http://192.168.1.101:9200/_analyze?analyzer=standard’ -d ‘你们有什么事情’
命令来了解各种分词器的分词效果。
三、中文分词器
一般中文分词器一般使用第三方的ik分词器、mmsegf分词器和paoding分词器,他们最初可能构建于lucene,后来移植于elasticsearch。 在最新版的elasticsearch,我们主要使用了ik分词器。
安装ik分词器到elasticsearch很简单,它有个插件目录analysis-ik,和一个配置目录ik, 分别拷贝到plugins和conf目录就可以了。当然你可以使用elasticsearch的plugin命令去安装,这个过程可能会有些麻烦。
然后在elasticsearch.yml文件中配置
index: analysis: analyzer: ik: alias: [ik_analyzer] type: org.elasticsearch.index.analysis.IkAnalyzerProvider ik_max_word: type: ik use_smart: false ik_smart: type: ik use_smart: true
意思就是ik分词器,也可以使用别名ik_analyzer,使用IkAnalyzerProvider类分词。
ik_max_word、ik_smart也是ik分词器,只不过一个打开了use_smart开关,一个没打开use_smart。这个本文不关心。
四、curl命令测试分词器
第三方的分词器,你是没法使用
curl -XGET ‘http://192.168.1.101:9200/_analyze?analyzer=standard’ -d ‘你们有什么事情’ 来查看分词效果的。
你必须创建一个指定该分词器的索引才行。
1、创建索引
curl -XPUT http://192.168.1.101:9200/index
2、创建mapping,这里就一个字段content
curl -XPOST http://192.168.1.101:9200/index/fulltext/_mapping -d' { "fulltext": { "_all": { "indexAnalyzer": "ik", "searchAnalyzer": "ik", "store": "false" }, "properties": { "content": { "type": "string", "store": "no", "indexAnalyzer": "ik", "searchAnalyzer": "ik" } } } }'
3、查看分词效果
curl -XGET ‘http://192.168.1.101:9200/index/_analyze?analyzer=ik’ -d ‘你们有什么事情’
4、索引数据
curl -XPOST http://192.168.1.101:9200/index/fulltext/1 -d'{content:”美国留给伊拉克的是个烂摊子吗”}’
curl -XPOST http://192.168.1.101:9200/index/fulltext/2 -d'{content:”公安部:各地校车将享最高路权”}’
curl -XPOST http://192.168.1.101:9200/index/fulltext/3 -d'{content:”中韩渔警冲突调查:韩警平均每天扣1艘中国渔船”}’
curl -XPOST http://192.168.1.101:9200/index/fulltext/4 -d'{content:”中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首”}’
5、全文检索
term检索,如果content分词后含有中国这个token,就会检索到
curl -XPOST http://192.168.1.101:9200/index/fulltext/_search -d' {"query" : { "term" : { "content" : "中国" }}}'
querystring检索,它会先把”中国美国“分词成中国、美国分别去检索,然后最后默认是OR的关系
curl -XPOST http://192.168.22.161:9200/index/fulltext/_search -d' { "query" : { "query_string" : { "default_field" : "content", "query" : "中国美国" } } }'
你也可以明显的写成
“query” : “中国 AND 美国”
或者
“query” : “中国 OR 美国”
如果你把查询条件加上双引号
“query” : “\”中国美国\””
便类似mysql里的like的效果
五、java客户端
java程序都有对应的类和方法。创建索引和设置mapping,这里就不赘述了,这里有总结:
主要是检索:
term搜索主要是用:QueryBuilders.termQuery(“content”, “中国”);
querystring搜索使用:
QueryStringQueryBuilder queryString = new QueryStringQueryBuilder(“中国 OR 美国”);
queryString.field(“content”);
相关推荐
使用ElasticSearch实现全文检索是一种常见且高效的方式。下面是详细的技术实践和说明: 安装和配置ElasticSearch: 首先,需要在服务器上安装ElasticSearch,并确保其正常运行。 然后,进行相关配置,如集群名称、...
使用spring boot+Elasticsearch 7.9.1+kibana 实现对word,pdf,txt等文件的非结构化数据全文内容检索
基于ElasticSearch全文检索的农业地理信息大数据平台设计与实现
而 Elasticsearch将 Lucene 作为其核心来实现所有索引和搜索的功能,通过简单的 RESTful 语法来隐藏掉 Lucene 的复杂性,从而让全文搜索变得简单 ES在Lucene基础上,提供了一些分布式的实现:集群,分片,复制等。 ...
基于ElasticSearch实现全文检索功能 整体架构 如图所示,所有的数据最终都会落到腾讯云的对象存储中,本地文件服务器会保存文件到用户的映射,分布式搜索服务会通过云存储下载文件,建立索引,文件预览模块也会从云...
基于ElasticSearch全文检索的农业地理信息大数据平台设计与实现.pdf
pgsql实现全文检索,需要安装必须的插件,内容写了如何安装等!
Elasticsearch实现检索词自动补全(检索词补全,自动纠错,拼音补全,繁简转换)
Spring Boot结合Jest实现对ElasticSearch的全文检索,分词检索,分页,搜索结果高亮关键词,多字段检索 PageController中的搜索方法里面是全套的,分词,分页,高亮等都包含,数据格式个es-head中创建索引的索引在...
Attachment 插件是 Elasticsearch 中的一种插件,...在 Elasticsearch 中使用 Attachment 插件,可以轻松地实现以下一些功能:搜索文档、生成全文搜索报告、自动标记文件、提取数据并进行分析,在文档中查找特定项等。
gradle+springboot+elasticsearch整合源码,实现查询、添加等功能
主要介绍了springboot集成ES实现磁盘文件全文检索的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java连接elasticsearch实现全文检索,并且高亮显示结果,实现分页。项目基于elasticsearch5.6.1可根据自己实际情况调整版本。最近项目需要所以学习了一下,项目很简单可以根据你的实际情况更改接口。我本地的搜索是...
springboot整合elasticsearch7,进行数据同步。elasticsearch相关度查询、排序。高亮显示;自动补全等功能。代码仅供参考,代码中有具体的注释,可以根据代码及注释内容,对自己项目架构及业务进行修改、整合。
好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个开源的高拓展的分布式全文搜索引擎它可以近乎实时的存储、检索数据;本身拓展性很好,可以拓展到上百台服务器,处理PB级别的数据。es也是用Java开发并使用...
NULL 博文链接:https://m635674608.iteye.com/blog/2231884
目前业界流行的ElasticSearch和Solr搜索技术底层正是使用Lucene实现的。使用全文检索技术可以构建像百度、谷歌、京东搜索、淘宝搜索等系统和功能. 在本套课程中,我们将全面的讲解Lucene技术,从简单应用到细节使用...
今天一个同事问我,如何使用 Mysql 实现类似于 ElasticSearch 的全文检索功能,并且对检索关键词跑分?我当时脑子里立马产生了疑问?为啥不直接用es呢?简单好用还贼快。但是听他说,数据量不多,客户给的时间非常...
网上的学习资料有限,正好我最近在研究es,所以写了一个demo。 springboot集成elasticsearch5.1,支持关键字的拼音和汉字检索。 接口: 1.查询部门树 2.查询产品信息
ElasticSearch作为基于Lucene的搜索服务器,既可以...SpringBoot作为Spring家族的全新框架,使得使用SpringBoot开发Spring应用变得非常简单,在本案例中我们给大家介绍Spring Boot整合Elasticsearch实现全文搜索引擎