ES入门

ES相关介绍

ES安装(前提必须安装好了JDK)

  • 单机版ES配置
  • ES集群配置
  • ES-head安装
  • Kibana安装
  • ik分词器安装
  • ik安装
  • ik分词测试
  • ik_max_word分词测试
  • ik_smart分词测试
  • 不使用分词器分词的效果

ES相关介绍

ES全称ElasticSearch,是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口

es相当于数据库,没有数据格式约束。

Elastic有一条完整的产品线及解决方案:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK技术栈。

Elasticsearch(官网链接:https://www.elastic.co/cn/elastic-stack )是Elastic Stack 的核心技术。详细介绍参考官网

Elasticsearch具备以下特点:

  • 分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心)
  • Restful风格,一切API都遵循Rest原则,容易上手近实时搜索,数据更新在Elasticsearch中几乎是完全同步的

ES安装(前提必须安装好了JDK)

先贴个其他博主分享的下载的链接:

官网的下载地址 https://www.elastic.co/cn/downloads/elasticsearch window系统 百度网盘: https://pan.baidu.com/s/1ZjRyivbtE-bzLWzvBqfJgw 提取码: totp linux系统 百度网盘: https://pan.baidu.com/s/1oBsZRlJ-D8KfNLTrs1FVZA 提取码: t34k

如果链接失效了的话也可以用以下方法下载,不过很慢,当然也可以再去找其他的途径。根据需要选择版本号。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz

tar一下解压缩,放在自己的软件目录下:

es 分词器查询 es分词器有哪些_分词器

目录介绍: bin:可执行文件在里面,运行es的命令就在这个里面,包含了一些脚本文件等 config:配置文件目录 JDK:java环境 lib:依赖的jar,类库 logs:日志文件 modules:es相关的模块 plugins:可以自己开发的插件 data:这个目录没有,自己新建一下,后面要用 -> mkdir data,这个作为索引目录

单机版ES配置

修改核心配置文件elasticearch.yml

  • 修改集群名称
  • 修改当前的es节点名称
  • 修改data数据保存地址和日志数据保存地址
  • 绑定es网络ip
  • 集群节点修改为之前的节点名称

es 分词器查询 es分词器有哪些_Elastic_02

es 分词器查询 es分词器有哪些_es 分词器查询_03

然后打开jvm.options,添加如下配置

es 分词器查询 es分词器有哪些_es 分词器查询_04

ES不允许使用root用户操作,需要为ES创建一个单独的用户

useradd esuser
chown -R esuser:esuser /usr/local/elasticsearch-7.5.1
su esuser

启动ES

./elasticsearch

启动错误解决

ERROR: [3] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max number of threads [3795] for user [esuser] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

需要切换到root用户修改配置

  • 修改/etc/security/limits.conf 文件 增加下面内容
- soft nofile 65536
 - hard nofile 131072
 - soft nproc 2048
 - hard nproc 4096
  • 修改 /etc/sysctl.conf 增加 vm.max_map_count=262145 修改完后sysctl -p刷新一下 再次切换到esuser 进行启动,未报错jps一下 启动成功 访问IP:9200

ES集群配置

这位博主的文章,可以借鉴。 当然这位博主的启动方式选择了shell脚本,如果弄不明白shell,可以采用最原始的方式挨个启动即可./elasticsearch

ES-head安装

ES-head:操作ES数据库的客户端,生产环境中都用来连接远程ES服务器,查看ES

贴个GitHub的链接:https://github.com/mobz/elasticsearch-head 这个链接下写了很多个安装ES-head的方法,我使用的是直接在谷歌的插件商店中下载安装。

安装后在谷歌的扩展程序栏打开。

es 分词器查询 es分词器有哪些_es_05

es 分词器查询 es分词器有哪些_es 分词器查询_06

这个小图标就是了。使用时点击小图标进入管理界面,在链接框中输入想要链接的ES访问链接,连接成功后如下:

es 分词器查询 es分词器有哪些_es 分词器查询_07

Kibana安装

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。

Kibana的版本需要和ES的版本对应,否则会不兼容

就像这样,启动时会一直报错和警告

es 分词器查询 es分词器有哪些_es_08

版本对应关系可以查看:

https://www.elastic.co/cn/support/matrix#matrix_compatibility

总结一下就是ES是什么版本的,Kibana就是什么版本,需要保持ES和Kibana的版本号一致

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-linux-x86_64.tar.gz

tar解压缩,修改配置文件kibana.yml

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.32.128:9200"
kibana.index: ".kibana"
i18n.locale: "zh-CN"

./kibana启动,访问192.168.32.128:5601

es 分词器查询 es分词器有哪些_es 分词器查询_09

ik分词器安装

之前我们创建索引,查询数据,都是使用的默认的分词器,分词效果不太理想,会把text的字段分成一个一个汉字,然后搜索的时候也会把搜索的句子进行分词,所以这里就需要更加智能的分词器IK分词器了。

ik安装

从 ik 分词器项目仓库中下载 ik 分词器安装包,下载的版本需要与自己安装的Elasticsearch 版本匹配:https://github.com/medcl/elasticsearch-analysis-ik

或者可以访问 gitee 镜像仓库:https://gitee.com/mirrors/elasticsearch-analysis-ik

下载后放到/opt/software/elasticsearch-6.2.2/plugins目录下(该目录根据自己安装的ES目录自行调整)

安装后重启ES,测试http://192.168.32.128:9200/_cat/plugins

es 分词器查询 es分词器有哪些_elasticsearch_10

ik分词测试

ik分词器提供两种分词器: ik_max_word 和 ik_smart

ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;

ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。

ik_max_word分词测试

POST _analyze
{
  "analyzer":"ik_max_word",
  "text":"我是中国人"
}

es 分词器查询 es分词器有哪些_elasticsearch_11

ik_smart分词测试

POST _analyze
{
  "analyzer":"ik_smart",
  "text":"我是中国人"
}

es 分词器查询 es分词器有哪些_es 分词器查询_12

不使用分词器分词的效果

POST _analyze
{
  "text":"我是中国人"
}

es 分词器查询 es分词器有哪些_分词器_13