1、es 概述
参考文档:https://www.cnblogs.com/mpyidudu/p/15472711.html
2、安装
因为 es 底层是基于开源 Lucene,而且 Lucene 是使用 Java 开发,所以需要 Java 环境。
如果要使用简易的 es 可视化界面,需要安装 elasticsearch-head,elasticsearch-head是一个基于node.js的前端工程,所以还需要 node 相关环境
综上,大致环境要求如下:
- Java 8+
- Node (elasticsearch-head 需要)
- es
- elasticsearch-head 简易 es 可视化界面
- Kibana(数据可视化)
- ik 分词器
2.1、es 安装
因为需要 java 8+ 的环境支持,所以需要先验证是否有安装 java 8+
ES官网下载地址java -version>>>java version "1.8.0_291"Java(TM) SE Runtime Environment (build 1.8.0_291-b10)Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
下载解压后,进入 bin 目录,windows 选择 xxx\elasticsearch-7.16.3-windows-x86_64\elasticsearch-7.16.3\bin,双击选中 elasticsearch.bat 即可运行
访问:http://localhost:9200/ 进行测试
2.2、es-head 安装
因为需要 node 支持,所以需要先验证环境是否有安装 node ```shell node -v
> v16.13.0
[github 下载地址](https://github.com/mobz/elasticsearch-head)shell克隆下载
git clone git://github.com/mobz/elasticsearch-head.git
切换目录
cd elasticsearch-head
下载 npm 依赖
npm install
启动
npm run start
访问
<br />启动后发现 “集群健康值”显示未连接,通过 f12 查看可知存在跨域情况<br />Unable to retrieve version information from Elasticsearch nodes<br />修改配置文件:E:\elasticsearch-7.16.3-windows-x86_64\elasticsearch-7.16.3\config\elasticsearch.yml<br />追加以下内容:```yaml# 是否支持跨域,默认不支持(false)http.cors.enabled: true# 允许跨域的网站,* 表示全部http.cors.allow-origin: "*"
2.3、Kibana安装
kibana官网下载地址
选中解压目录中的 kibana.bat 进行启动,访问路径:http://localhost:5601/
汉化
Kibana 自带汉化配置,汉化配置路径:/usr/share/kibana/node_modules/x-pack/plugins/translations/translations/zh-CN.json
修改方式:
修改 安装路径下
# i18n.locale: en# 放开注释,并修改为i18n.locale: "zh-CN"
2.4、ik 分词器
github下载地址
未加载分词器启动输出:
加载分词器后启动输出:
测试分词:
GET /_analyze{"analyzer": "ik_max_word","text": "雀巢咖啡"}
ik_smart为最少划分;ik_max_word为最细粒度划分,穷尽词库所有可能
3、基本概念
ES是面向文档的,一切都是JSON
关系型数据库与ES对比:
| Relational DB | ES |
|---|---|
| 数据库(database) | 索引(indices) |
| 表(tables) | 类型(types) |
| 行(rows) | 文档(documents) |
| 字段(columns) | fields |
4、基本操作
4.1、增删改查
| method | url地址 | 描述 |
|---|---|---|
| PUT | localhost:9200/索引名称/类型名称/文档ID | 创建文档(指定文档ID) |
| POST | localhost:9200/索引名称/类型名称 | 创建文档(随机文档ID) |
| POST | localhost:9200/索引名称/类型名称/文档ID/_update | 修改文档 |
| DELETE | localhost:9200/索引名称/类型名称/文档ID | 删除文档 |
| GET | localhost:9200/索引名称/类型名称/文档ID | 通过文档ID查询文档 |
| POST | localhost:9200/索引名称/类型名称/_search | 查询所有数据 |
4.1.1、创建索引
创建索引可以用 PUT 或者 POST ,本地示例使用 PUT
# PUT /索引名/类型名/文档IDPUT /test/user/1{"name":"张三1","grade": "1,2"}
4.1.2、修改数据
修改数据也有两种方法,PUT 和 POST ,但是推荐使用 POST,因为 PUT 是强制覆盖,如果修改的内容遗漏原有的字段,则原有数据字段就会被删掉.POST 则是可以通过 _update 指明修改的字段
POST /test/user/1{"name":"张三2","grade": "1,2"}
4.1.3、删除
DELETE /test/user/1
4.1.4、查询
通过_cat可以获取ES当前的信息
GET _cat/indices?v
- 数据查询```yamlGET /test/user/_search?q=name:张
4.2、自定义分词字典
默认情况下 es 内置的可能不足够支撑自定义分析策略,则可以添加自定义分词字典,比如对于 “哔哩哔哩”的默认分词
修改 安装路径下\elasticsearch-7.16.3\plugins\elasticsearch-analysis-ik-7.16.3\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">test.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> --></properties># 其中 test.dic 是自定义的文件,名称任意,文件后缀 .dic 即可
对应 test.dic 文件内容
哔哩哔哩哔哩哔哩动画
修改后重启 es ,重新进行分词后看到会根据自定义的内容进行分词

