ElasticSearch Windows安装配置
简介
- 分布式全文检索引擎,全文检索引擎的核心倒排索引技术,先创建索引在进行搜索的一个过程
- 在某些搜索业务场景下(如模糊搜索,海量数据搜索),传统数据库效率极低。海量数据下的模糊搜索是企业中比较常见的业务需求,使用全文检索引擎ElasticSearch解决效率问题
全文检索引擎
- 全文检索是利用倒排索引技术对需要搜索的数据进行处理,然后提供快速匹配的技术
- 其实全文检索还有另外一种专业定义,先创建索引然后对索引进行搜索的过程。
倒排索引
- 传统查找:按行存储,逐行扫描匹配,效率较差。
- 倒排索引:首先对文档中的数据分词,对词条进行索引,并记录词条在文档中出现的位置。这样查找时只要找到了词条,就找到了对应的文档。概括来讲是先找到词条,然后看看哪些文档包含这些词条。
分词器
全文检索引擎关键点在于分词器
-
按分词算法构造词,然后去匹配已建好的词库集合,如果匹配到就切分出来成为词语。通常词库分词被认为是最理想的中文分词算法。如:“我们是中国人”,效果为:“我们”、“中国人”,“中国”。(使用极易分词的MMAnalyer,可以使用“极易分词”,或者是"庖丁分词"分词器、lKAnalyzer)。基本上可以把词全部分出来(经常用的分词器)
-
停用词:有些词在文本中出现的频率非常高。但对本文的语义产生不了多大的影响。例如英文的a、an、the、of等。或中文的“的、了、呢等”。这样的词称为停用词。停用词经常被过滤掉,不会被进行索引。在检索的过程中,如果用户的查询词中含有停用词,系统会自动过滤掉。停用词可以加快索引的速度,减少索引库文件的大小。
扩展词:就是不想让哪些词被分开,让他们分成一个词。
安装
Window版的Elasticsearch的安装很简单,类似Window版的Tomcat,解压开即安装完毕,解压后的Elasticsearch的目录结构如下:
启动ES服务
点击Elasticsearch下的bin目录下的Elasticsearch.bat启动,控制台显示的日志信息如下:
注意:9300是tcp通讯端口,集群间和TCP 客户端都执行该端口,9200是http协议的RESTful接口 。
通过浏览器访问Elasticsearch服务器,看到如下返回的json信息,代表服务启动成功:
ElasticSearch6.8.0默认占用本机内存1个G,如果不足,可以改小一点。
修改配置文件elasticsearch-6.8.0\config\jvm.options
减少占用内存
注意:Elasticsearch是使用java开发的,且本版本的es需要的jdk版本要是1.8及以上,所以安装Elasticsearch之前保证JDK1.8+安装完毕,并正确的配置好JDK环境变量,否则启动Elasticsearch失败。
安装ES插件ElasticSearch-head
谷歌商店中可以找到
安装Kibana
什么是Kibana
Kibana是ElasticSearch的数据可视化和实时分析的工具,利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等。
安装配置
-
解压即安装成功
-
进入安装目录下的config目录的kibana.yml文件
修改elasticsearch服务器的地址:
elasticsearch.url: "http://localhost:9200"
修改kibana配置支持中文:
i18n.locale: "zh-CN"
需要先启动elastixsearch
集成IK分词器
Lucene的IK分词器早在2012年已经没有维护了,要使用的是在其基础上维护升级的版本,并且开发为Elasticsearch的集成插件了,与Elasticsearch一起维护升级,版本也保持一致。
1、安装插件
插件解压之后,存放到elasticsearch-6.8.0\plugins\目录中,即可安装成功插件。
注意:解压的时候,文件必须在plugins目录的第一级目录下,可以随意命名
重新启动ElasticSearch之后,看到如下日志代表安装成功
2、测试
IK分词器有两种分词模式:ik_max_word和ik_smart模式。
- ik_max_word:会将文本做最细粒度的拆分
- ik_smart:会做最粗粒度的拆分,智能拆分
请求方式:POST
请求url:http://127.0.0.1:9200/_analyze
请求体:
{
"analyzer": "ik_smart",
"text": "南京市长江大桥"
}
分词效果
添加扩展词典和停用词典
停用词:有些词在文本中出现的频率非常高。但对本文的语义产生不了多大的影响。例如英文的a、an、the、of等。或中文的”的、了、呢等”。这样的词称为停用词。停用词经常被过滤掉,不会被进行索引。在检索的过程中,如果用户的查询词中含有停用词,系统会自动过滤掉。停用词可以加快索引的速度,减少索引库文件的大小。
扩展词:就是不想让哪些词被分开,让他们分成一个词。比如上面的江大桥
南京市长江大桥
南京市,长江大桥
南京,市长,江大桥
江大桥拆分出来,
自定义扩展词库
-
进入到elasticsearch-6.8.0\plugins\elasticsearch-analysis-ik-6.8.0\config目录下, 新增自定义词典myext_dict.dic
输入 :江大桥
-
将我们自定义的扩展词典文件,配置到IKAnalyzer.cfg.xml文件中
-
然后重启
-
进行测试