elasticsearch

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况

docker安装es

因为elasticsearch是java写的需要安装java虚拟机,所以我们这里推荐用docker进行安装。

拉取镜像

1
2
# 这里我们拉取7.12.1
docker pull elasticsearch:7.12.1

image-20210530143835569

运行容器

1
2
3
4
5
6
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" b0e9f9f047e6

# -d: 在后台运行
# --name: 别名
# -p: 映射端口号
# -e:discovery.type=single-node:单机运行

然后就可以在浏览器中查看,我们键入127.0.0.1:9200

image-20210530145904787

image-20210530145944925

配置跨域

我们进入es的docker容器中

1
2
3
4
5
6
7
8
9
10
11
12
docker exec -it es /bin/bash
# 找到配置文件
[root@e0cfd719797d elasticsearch]# vi config/elasticsearch.yml
# 在末尾添加如下两行,注意冒号后面需要加上空格
http.cors.enabled: true
http.cors.allow-origin: "*"

# 保存退出
:wq

# 重启es容器
docker restart es

image-20210530150640434

安装ik分词器

es自带的分词器对中文分词不是很友好,所以我们下载开源的IK分词器来解决这个问题。首先进入到plugins目录中下载分词器,下载完成后然后解压,再重启es即可。具体步骤如下:
注意:elasticsearch的版本和ik分词器的版本需要保持一致,不然在重启的时候会失败。可以在这查看所有版本,选择合适自己版本的右键复制链接地址即可。点击这里

1
2
3
4
5
6
7
8
9
10
# 进入容器
docker exec -it es /bin/bash
# 进入plugins目录
cd /usr/share/elasticsearch/plugins/
# 执行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
# 退出容器
exit
# 重启
docker restart es

我们可以用postman 试一下

image-20210530151905035

不加ik分词的话是把每个词都分开了。然后我们加上中文分词

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
{
"tokens": [
{
"token": "测",
"start_offset": 0,
"end_offset": 1,
"type": "<IDEOGRAPHIC>",
"position": 0
},
{
"token": "试",
"start_offset": 1,
"end_offset": 2,
"type": "<IDEOGRAPHIC>",
"position": 1
},
{
"token": "一",
"start_offset": 2,
"end_offset": 3,
"type": "<IDEOGRAPHIC>",
"position": 2
},
{
"token": "下",
"start_offset": 3,
"end_offset": 4,
"type": "<IDEOGRAPHIC>",
"position": 3
},
{
"token": "中",
"start_offset": 4,
"end_offset": 5,
"type": "<IDEOGRAPHIC>",
"position": 4
},
{
"token": "文",
"start_offset": 5,
"end_offset": 6,
"type": "<IDEOGRAPHIC>",
"position": 5
},
{
"token": "分",
"start_offset": 6,
"end_offset": 7,
"type": "<IDEOGRAPHIC>",
"position": 6
},
{
"token": "词",
"start_offset": 7,
"end_offset": 8,
"type": "<IDEOGRAPHIC>",
"position": 7
}
]
}

不加ik分词的话是把每个词都分开了。然后我们加上中文分词

image-20210530152041731

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
"tokens": [
{
"token": "测试",
"start_offset": 0,
"end_offset": 2,
"type": "CN_WORD",
"position": 0
},
{
"token": "试一下",
"start_offset": 1,
"end_offset": 4,
"type": "CN_WORD",
"position": 1
},
{
"token": "一下",
"start_offset": 2,
"end_offset": 4,
"type": "CN_WORD",
"position": 2
},
{
"token": "一",
"start_offset": 2,
"end_offset": 3,
"type": "TYPE_CNUM",
"position": 3
},
{
"token": "下",
"start_offset": 3,
"end_offset": 4,
"type": "COUNT",
"position": 4
},
{
"token": "中文",
"start_offset": 4,
"end_offset": 6,
"type": "CN_WORD",
"position": 5
},
{
"token": "分词",
"start_offset": 6,
"end_offset": 8,
"type": "CN_WORD",
"position": 6
}
]
}

可以看到效果对比很明显。

kibana安装

Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。

Kibana 可以使大数据通俗易懂。它很简单,基于浏览器的界面便于您快速创建和分享动态数据仪表板来追踪 Elasticsearch 的实时数据变化。

搭建 Kibana 非常简单。您可以分分钟完成 Kibana 的安装并开始探索 Elasticsearch 的索引数据 — 没有代码、不需要额外的基础设施。

这里一定要注意!!!!

Kibana 的版本需要和 Elasticsearch 的版本一致。这是官方支持的配置。

拉取镜像

1
2
3
# docker 安装
docker pull docker.elastic.co/kibana/kibana:7.12.1

配置kibana.yml
1
2
3
4
5
6
# 创建配置文件目录
mkdir -p ~/docker/kibana/config
# 进入该目录
cd ~/docker/kibana/config/
# 创建并写入配置文件
vim kibana.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
# kibana的服务名称
server.name: kibana
# kibana的主机地址
server.host: "0"
# elasticsearch的主机IP
# 这里填入你的外网地址,因为是在docker容器里面,如果填回环地址的话就有问题
elasticsearch.hosts: [ "http://es_ip:9200" ]
# 配置中文
i18n.locale: "zh-CN"

运行容器

1
2
3
4
5
6
docker run -d \
--name=kibana \
--restart=always \
-p 5601:5601 \
-v ~/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
kibana:7.12.1

访问页面

输入:http://127.0.0.1:5601/

我们可以使用kibana来给es发送restfulAPI了

image-20210530195642885

具体es如何操作,这里我推荐一下这个为老哥的ElasticSerach 7 教程 github