Elasticsearch,简称es,是一款高扩展的分布式全文检索引擎。它能够近乎实时的存储,检索数据。es是面向文档型的数据库,一条数据就是一个文档,用json作为文档序列化的格式。es是基于java开发的并使用lucene做为核心来实现全部的索引和搜索功能,将对搜索引擎的操做都封装成restful的api,使用http请求就能对其进行操做。html
es的优势:java
这里笔者使用的是es7.X,es6和es7的差异仍是挺大的,以下:node
要求:jdk1.8以上,最低要求1.8。es6
我这里是安装的windows版本的,es的安装很是简单,开箱即用。若是须要文件,请留言邮箱。算法
1.若是电脑性能不是很好,能够修改config下的jvm.options中的22行~23行:数据库
-Xms1g -Xmx1g
由于个人电脑性能不是很好,因此我就改为了256M。npm
2.解决跨域,用于后面可视化界面和后台的链接。json
config下的elasticsearch.yml文件末尾添加:windows
http.cors.enabled: true http.cors.allow-origin: "*"
3.启动,bin目录下的elasticsearch.bat,双击便可启动。api
4.访问:
5.安装可视化界面(head)
head插件依赖于node.js。因此必需要安装node.js。
head插件基于grunt和http通讯。
安装依赖:
# 在elasticsearch-head-master目录下安装淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org # 安装完cnpm以后执行 cnpm install # 启动head插件命令 npm run start
访问:localhsot:9100
图中绿色的表示数据块。
6.安装kibana
kibana也是基于node的。
启动:kibana-7.6.1-windows-x86_64\bin目录下的kibana.bat的文件双击启动。
访问:localhost:5601
从上图中能够看到,kibana是英文版的,汉化:
kibana-7.6.1-windows-x86_64\config下最后一行添加:
i18n.locale: "zh-CN"
重启以后再此访问,就全是中文版的了。
索引(index):索引是组织数据的逻辑命名空间,是存放数据的地方,能够理解为数据库。
类型(type):定义数据结构的,能够理解为数据库的一张表。
文档(document):数据(一个文档就是一条数据),能够理解为数据库的行数据。
倒排索引:一个倒排索引有文档中全部不重复词的列表构成,使用与快速的全文检索。能够理解为数据库经过增长一个索引(好比一个 B树(B-tree))索引 到指定的列上,以便提高数据检索速度。在es中,每一个字段的全部数据都是默认被索引的,即每一个字段都有为了快速检索设置的专门的倒排索引。同时能在同一个查询中使用全部的倒排索引。
1.物理设计:
es在后台把每一个索引划分红多个分片,每一个分片能够在集群中的不一样服务器间迁移,由于es通常状况下都会搭建集群,固然单机也是集群。
2.逻辑设计:
一个索引类型中,包含多个文档。有多个文档的话,就能够去查找对应得信息,当索引一篇文档时,能够经过这样得一个顺序找到它:索引>类型>文档ID(对应数据库位:数据库>表>行),经过这个组合就能找到对应得某个具体的文档。
将elasticsearch-analysis-ik-7.6.1这个文件解压缩,而后放到es的elasticsearch-7.6.1\plugins下,如图:
而后重启es,能够看到ik分词器的插件。
IK分词器提供了两个分词算法:ik_smart(最少切分) ik_max_word(最细粒度划分);
测试:
我在这里使用“塘朗变电站”测试,能够看到,ik分词器将“塘”,“朗”看成一个词,将“变电站”看成一个词。若是咱们想将塘朗看成一个词,那么就须要自定义配置词组。
在elasticsearch-7.6.1\plugins\ik\config目录下,有一个IKAnalyzer.cfg.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 扩展配置</comment> <!--用户能够在这里配置本身的扩展字典 在这里我写一个本身的字典--> <entry key="ext_dict">charon.dic</entry> <!--用户能够在这里配置本身的扩展中止词字典--> <entry key="ext_stopwords"></entry> <!--用户能够在这里配置远程扩展字典 --> <!-- <entry key="remote_ext_dict">words_location</entry> --> <!--用户能够在这里配置远程扩展中止词字典--> <!-- <entry key="remote_ext_stopwords">words_location</entry> --> </properties>
在config目录下新建一个charon.dic文件,而后在里面新增塘朗。而后就能够看到,配置以后就将“塘朗”变成一个词了。
最初打算本身作一些关于文档操做的案例的,可是发如今官网文档上有很详细的说明,那就贴出官网的地址吧:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
这里我就不贴出本身的代码了,下面这位老哥的代码,亲测有效:
https://blog.csdn.net/b15735105314/article/details/112300222