基于docker 的 elasticstrach安装和基本使用

elasticstrach 使用

前面我们讲过elasticstrach+kibana安装,本次介绍的是基于docker的elasticsearch的使用。

1. elasticstrach介绍

开源的 Elasticsearch 是目前全文搜索引擎的首选。
Elasticsearch 不支持对中文进行分词建立索引,需要配合扩展ik分词器[elasticsearch-ik]来实现中文分词处理。

2. docker 安装elasticsearch-ik

  • 在拉取docker镜像前,先配置镜像加速,根据以下步骤玩镜像加速配置
# 镜像加速配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
# 修改配置文件
{
  "registry-mirrors": ["https://2xdmrl8d.mirror.aliyuncs.com"]
}
EOF
# 重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 拉取elasticsearch-ik分词器镜像
# 拉取ik分词器
sudo docker pull bachue/elasticsearch-ik:6.2.4
  • 使用本地镜像
sudo docker load -i '/home/moluo/Desktop/elasticsearch-ik.tar.gz'
sudo docker image ls
  • 创建容器
sudo docker run -itd --network=host -e ES_JAVA_OPTS="-Xms256m -Xmx256m" --name=esik bachue/elasticsearch-ik:6.2.4
  • 查看运行日志信息
sudo docker logs --since 30m esik  # 查看最近30分钟的日志

sudo docker logs -t --since="2020-01-01T00:00:00" <容器名称/容器ID> # 查看某时间之后的日志

sudo docker logs -t --since="开始时间" --until "结束时间" <容器名称/容器ID> # 查看某时间段日志
  • 当出现以下报错时
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  • 原因:vm.max_map_count参数,是允许一个进程在内容中拥有的最大数量(VMA:虚拟内存地址, 一个连续的虚拟地址空间),当进程占用内存超过max_map_count时, 直接GG。所以错误提示:elasticsearch用户拥有的内存权限太小,至少需要262144,所以我们需要将原类的65530修改为262144
    max_map_count配置文件写在系统中的/proc/sys/vm文件中,但是我们不需要进入docker容器中配置,因为docker使用宿主机的/proc/sys作为只读路径之一。因此我们在Ubuntu系统下设置一下命令即可:
sudo sysctl -w vm.max_map_count=262144
  • 删除原来的容器,重新创建容器
sudo docker rm esik
sudo docker run -itd --network=host -e ES_JAVA_OPTS="-Xms256m -Xmx256m" --name=esik bachue/elasticsearch-ik:6.2.4
  • 打开浏览器,使用ip:9200进行访问,出现一些界面,那恭喜你,安装成功,接下我们使用postman测试一下查询效果。
    基于docker 的 elasticstrach安装和基本使用
    打开postman(如果没安装postman的同学可以先安装postman)。

3. elasticstarch的基本使用

使用get请求一下json数据,访问IP:9200/_analyze?pretty

	{
	  "text": "中国人"
	}

基于docker 的 elasticstrach安装和基本使用
我们发现原生的elasticsearch-ik的分词对中文的分词效果并不是很友好,中国人就是一个词,却被分成了三个,所以我们需要指定分词器。

	{
	  "text": "中国人",
	  "analyzer": "ik_smart"
	}

基于docker 的 elasticstrach安装和基本使用
得到的结果是比较理想的。除了ik_smart分词器还有其他分词器。

standard 标准分词器,单字切分。上面我们测试分词器时候没有声明analyzer参数,则默认调用标准分词器。
simple 简单分词器,按非字母字符来分割文本信息

以上这两个分词器相对于中文来说是不太友好的,所以我们需要使用ik分词器。

ik_max_word:会将文本做最细粒度的拆分;尽可能多的拆分出词语

ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有
基于docker 的 elasticstrach安装和基本使用基于docker 的 elasticstrach安装和基本使用 py臭屁虫 发布了5 篇原创文章 · 获赞 0 · 访问量 80 私信 关注
上一篇:Elastic Search集成IK分词器、集成拼音分词器


下一篇:kibana操作记录