ElasticSearch简介

ElasticSearch(简称ES)是一款开源的分布式全文检索引擎,底层使用的是Java的Lucene库。ES其本身很容易实现集群部署,能够支持检索PB级的数据,还提供了RestfulAPI作为操作接口。相比直接基于Lucene开发,使用ES搭建分布式全文检索系统更加方便,ES本身实现了分布式模式,并提供了易用的接口隐藏底层实现的细节。

官网:https://www.elastic.co/cn/elasticsearch/

有关Lucene库,可以参考/Java/第三方库/Lucene-全文检索引擎章节。

注:如果说ES有什么缺点,我个人认为唯一的缺点就是RestfulAPI设计的太怪异了,既不Restful也不符合正常人类的思维,更是存在Bulk API这种奇葩;Java客户端设计的更是一言难尽,其对自己的依赖封装像一坨屎,操作ES的接口对Builder模式的滥用到了无以复加的地步,给人一种不是已经发展了很多年的成熟产品的感觉。

ES服务搭建

对于学习环境,我们可以搭建一个简易的单节点ES服务。ES是Java语言编写的,我们直接在官网下载ES服务端程序即可,ES8安装包内置了JDK。下载完成后,运行bin目录的启动脚本,即可运行ES服务。

./elasticsearch

ES8运行后,默认会开启安全配置,相关配置会自动追加写入配置文件,我们学习环境可以将安全配置关闭,但在生产环境不要这样做!修改配置文件config/elasticsearch.yml

xpack.security.enabled: false

修改后重启ES服务即可。

ES的RestfulAPI默认使用9200端口,集群通信会占用TCP的9300端口。

使用IK分词器

我们知道Lucene创建倒排索引时,需要对文章内容进行分词,Lucene默认的分词器对英文比较友好,而中文环境效果就很差了,如果需要对中文内容检索,比较常用的是IK分词器。

Github地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

这里要注意IK分词器插件的版本需要和ES对应,否则ES是无法启动的。我们下载压缩包后,在ES的plugins内创建一个文件夹(可以随意起名),将压缩包解压到其中即可,ES启动时会自动搜索加载。

集群状态查看

ES中的CatAPI可以用来查看集群状态信息,但要注意这组API返回格式不是JSON,因此只能用于手动访问接口查看,不适合程序读取:

GET http://localhost:9200/_cat/health?v=true

查看集群节点状态:

GET http://localhost:9200/_cat/nodes?v=true
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap