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+
    1. java -version
    2. >>>
    3. java version "1.8.0_291"
    4. Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
    5. Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
    ES官网下载地址
    下载解压后,进入 bin 目录,windows 选择 xxx\elasticsearch-7.16.3-windows-x86_64\elasticsearch-7.16.3\bin,双击选中 elasticsearch.bat 即可运行
    访问:http://localhost:9200/ 进行测试
    image.png

    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

访问

http://localhost:9100/

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/25709938/1643005304191-1486c72f-e1a8-4a57-b119-441956d4496f.png#clientId=uf09df069-1cf6-4&from=paste&height=359&id=u7e7659d3&margin=%5Bobject%20Object%5D&name=image.png&originHeight=718&originWidth=2240&originalType=binary&ratio=1&size=168053&status=done&style=none&taskId=u80e0cc00-d4dd-493c-b06c-870484e916e&width=1120)<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 />追加以下内容:
  2. ```yaml
  3. # 是否支持跨域,默认不支持(false)
  4. http.cors.enabled: true
  5. # 允许跨域的网站,* 表示全部
  6. http.cors.allow-origin: "*"

然后重启 es 即可,es 作为集群管理 本身也是一个节点
image.png

2.3、Kibana安装

kibana官网下载地址
选中解压目录中的 kibana.bat 进行启动,访问路径:http://localhost:5601/
image.png
汉化
Kibana 自带汉化配置,汉化配置路径:/usr/share/kibana/node_modules/x-pack/plugins/translations/translations/zh-CN.json
修改方式:
修改 安装路径下

  1. # i18n.locale: en
  2. # 放开注释,并修改为
  3. i18n.locale: "zh-CN"

然后重启 kibana
image.png

2.4、ik 分词器

github下载地址
未加载分词器启动输出:
image.png
加载分词器后启动输出:
image.png
测试分词:

  1. GET /_analyze
  2. {
  3. "analyzer": "ik_max_word",
  4. "text": "雀巢咖啡"
  5. }

ik_smart为最少划分;ik_max_word为最细粒度划分,穷尽词库所有可能

image.png

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

  1. # PUT /索引名/类型名/文档ID
  2. PUT /test/user/1
  3. {
  4. "name":"张三1",
  5. "grade": "1,2"
  6. }

4.1.2、修改数据

修改数据也有两种方法,PUT 和 POST ,但是推荐使用 POST,因为 PUT 是强制覆盖,如果修改的内容遗漏原有的字段,则原有数据字段就会被删掉.POST 则是可以通过 _update 指明修改的字段

  1. POST /test/user/1
  2. {
  3. "name":"张三2",
  4. "grade": "1,2"
  5. }

image.png

4.1.3、删除

  1. DELETE /test/user/1

4.1.4、查询

  • 查询基本信息 ```bash

    获取索引信息,显示索引下的结构信息

    GET /test

通过_cat可以获取ES当前的信息

GET _cat/indices?v

  1. - 数据查询
  2. ```yaml
  3. GET /test/user/_search?q=name:张

image.png

4.2、自定义分词字典


默认情况下 es 内置的可能不足够支撑自定义分析策略,则可以添加自定义分词字典,比如对于 “哔哩哔哩”的默认分词
image.png
修改 安装路径下\elasticsearch-7.16.3\plugins\elasticsearch-analysis-ik-7.16.3\config\IKAnalyzer.cfg.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
  3. <properties>
  4. <comment>IK Analyzer 扩展配置</comment>
  5. <!--用户可以在这里配置自己的扩展字典 -->
  6. <entry key="ext_dict">test.dic</entry>
  7. <!--用户可以在这里配置自己的扩展停止词字典-->
  8. <entry key="ext_stopwords"></entry>
  9. <!--用户可以在这里配置远程扩展字典 -->
  10. <!-- <entry key="remote_ext_dict">words_location</entry> -->
  11. <!--用户可以在这里配置远程扩展停止词字典-->
  12. <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
  13. </properties>
  14. # 其中 test.dic 是自定义的文件,名称任意,文件后缀 .dic 即可

对应 test.dic 文件内容

  1. 哔哩哔哩
  2. 哔哩哔哩动画

修改后重启 es ,重新进行分词后看到会根据自定义的内容进行分词
image.png