ELK三部曲-Elasticsearch入门

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elastic单机安装以及常用操作讲解

elasticsearch

在网上上我看已经有好多关于Elasticsearch的介绍,我就不在翻来覆去讲一些基本概念,大家感兴趣的可以自己去找一些资料巩固下。我这只为了顾及众多首次接触Elasticsearch,案例都讲的很浅显,还有就是受个人能力所限,实在写不出高大上的博文,各位读者发现有错误之处,还不要取笑我,给我指出来即可。

题外话,这一章节仅仅作为开发学习来构建基础的环境,并未考虑elasticsearch的高可用性,仅说明一些基础知识,带大家有一个认识。当然既然是自我发挥,也就是一家之言,难免有遗漏地方,希望大家也就本着看看。

1. 下载&安装

1.1. 环境需求

  • CentOs7
  • 内存4G+:这个因环境而异
  • JDK11+:由于 elasticsearch 运行需要JDK环境,我机器 JDK 版本是 11,如果 JDK 低于 9.0 会有一些问题,下图我也贴出来。

Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

1.2. 下载

官方 elasticsearch 下载,下载 elasticsearch,目前最新的稳定版本为 7.4.0 版本。

1.3. 安装

  • 下载 elasticsearch,会得到一个文件 elasticsearch-X.X.X-linux-x86_64.tar.gz
  • 创建个文件夹 elastic
  • 再创建一个组,案例中我以 dev命名
  • 再创建一个用户, elasticsearch不允许使用 root启动,创建一个新的用户 elastic,并为这个账户赋予相应的权限来启动 elasticsearch
  • 解压文件
  • elasticsearch-X.X.X-linux-x86_64.tar.gz 文件移入 elastic
  • 重新调整下权限 chown -R

[root@localhost download]$ pwd

/data/download/

[root@localhost download]$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.0-linux-x86_64.tar.gz

[root@localhost download]$ cd ../app/

[root@localhost app]$ mkdir elastic

[root@localhost app]$ groupadd dev

[root@localhost app]$ useradd elastic -g dev

[root@localhost app]$ passwd elastic

[root@localhost app]$ chown -R elastic:dev elastic

[root@localhost app]$ su elastic

[elastic@localhost app]$ cd /elastic

[elastic@localhost elastic]$ cp ../../download/elasticsearch-7.4.0-linux-x86_64.tar.gz .

[elastic@localhost elastic]$ tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz

[elastic@localhost elastic]$ mv elasticsearch-7.4.0/ .

1.4. 修改配置文件

配置文件中有很多配置项,例如集群信息、端口等。

elasticsearch 本身为安全考虑,默认不允许外部访问,我们这里做演示,就需要将这个配置项修改掉,路径在 config/elasticsearch.yml


[elastic@localhost elastic]$ vi config/elasticsearch.yml

修改后的效果如下:


-- 激活节点1

node.name: node-1

-- 允许外部IP访问

network.host: 0.0.0.0

-- 把这个注释先放开并修改

cluster.initial_master_nodes: ["node-1"]

1.5. JVM配置

由于 elasticsearchJava 开发的,所以可以通过 ${ES_HOME}/config/jvm.options 配置文件来设定 JVM 的相关设定。如果没有特殊需求按默认即可。

不过其中还是有两项最重要的-Xmx1g与-Xms1gJVM的最大最小内存。如果太小会导致Elasticsearch刚刚启动就立刻停止。太大会拖慢系统本身。

1.6. 启动&验证结果

  • 启动

[elastic@localhost elastic]$ ./bin/elasticsearch

elastic

注意,启动后可能会有两种错误导致启动失败。

20201215104646

从中可以看出主要是打开时数量不够以及虚拟内存不足。


[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决措施

  • vi /etc/security/limits.conf

elastic hard nofile 65536

elastic soft nofile 65536

其中 elastic 为启动 elasticsearch的用户名。

  • vi /etc/sysctl.conf

vm.max_map_count=655360

再执行 sysctl -p

最后对 elasticsearch进行重启。

1.7. 小结

从中我们看到, elasticsearch安装本身并不困难,比较简单,修改配置文件以及注意 JDK版本。

2. 可视化工具

elasticsearch 的可视化工具有很多,比如 elasticsearch-headDejavuElasticHD等。

此处选择 ElasticHD,比较适合学习以及演示,这是一个开源 elasticHD, [Github下载地址](

https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip)

ElasticHD下载界面

提供Windows和linux,但是这个版本有一个弊端,就是好久没更新,凑合着用呗。


1、unzip elasticHD_linux_amd64.zip

2、chmod -R 777 ElasticHD

3、./ElasticHD -p 0.0.0.0:9800

ElasticHD启动

在浏览器中打开 http://192.168.244.128:9800/ 就可以看到。

ElasticHD监控

ElasticHD监控

3. 中文分词插件IK

elasticsearch 本身对中文支持不够好,所以需要中文的分词插件,目前主流的都用 IK以下这是 Google的中文词条。

IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK实现了简单的分词歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。

3.1. IK安装

安装地址,截止当前 IK 最新版本是 v7.4.0 ,但是我 elasticsearch 版本是 7.4所以下载与自己相对应的版本,否则分词插件将不能被识别。

elasticsearch-analysis-ik

  • 下载

[root@localhost download]$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.0/elasticsearch-analysis-ik-7.4.0.zip
  • 安装插件

elasticsearch 安装目录下 找到 plugins 文件夹并创建一个名为 ik的目录,将下载的 elasticsearch-analysis-ik-7.10.0.zip 移入。


[elastic@localhost elastic]$ cd plugins

[elastic@localhost plugins]$ cd mkdir ik && cd ik

[elastic@localhost ik]$ cp ../../../download/elasticsearch-analysis-ik-7.4.0.zip .

[elastic@localhost ik]$ unzip elasticsearch-analysis-ik-7.4.0.zip

完成后,将 elasticsearch 重启,我们观察控制台

elasticsearch加载 ik

其中红线处就是 elasticsearch将分词器加载,说明我们安装成功。


[2020-12-15T01:19:51,151][INFO ][o.e.p.PluginsService     ] [centos8] loaded plugin [analysis-ik]

3.2. 分词器

上一章节我们演示对中文分词的安装,下来我们开始我们分词器验证之旅。

使用crul命令,输入下面的URL地址,验证分词器是否成功。


[elastic@localhost elastic]$ curl -X GET -H "Content-Type: application/json"  "http://localhost:9200/_analyze?pretty=true" -d'{"text":"中华五千年华夏"}';

CURL验证分词器

有的人喜欢 Postman,也可以。

Postman验证分词器

至此我们的中文分词器可以用啦。

3.3. ik_max_word和ik_smart

  • ik_max_word: 将文本按最细粒度的组合来拆分,比如会将“中华五千年华夏”拆分为“五千年、五千、五千年华、华夏、千年华夏”,总之是可能的组合;
  • ik_smart: 最粗粒度的拆分,比如会将“五千年华夏”拆分为“五千年、华夏”

当不添加分词类别,Elastic对于汉字默认使用standard只是将汉字拆分成一个个的汉字,而我们ik则更加的智能,下面通过几个案例来说明。

3.3.1. ik_smart分词

在JSON格式中添加analyzer节点内容为ik_smart


[elastic@localhost elastic]$ curl -X GET -H "Content-Type: application/json"  "http://localhost:9200/_analyze?pretty=true" -d'{"text":"中华五千年华夏","analyzer": "ik_smart"}';

elastic

3.3.2. ik_max_word分词

在JSON格式中添加analyzer节点内容为ik_max_word


[elastic@localhost elastic]$ curl -X GET -H "Content-Type: application/json"  "http://localhost:9200/_analyze?pretty=true" -d'{"text":"中华五千年华夏","analyzer": "ik_max_word"}';

4

3.4. 自定义分词

IK 很友好,为我们提供热更新 IK 分词,在配置文件 {ES_HOME}/plugins/ik/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">custom/mydict.dic;custom/single_word_low_freq.dic</entry>

 <!--用户可以在这里配置自己的扩展停止词字典-->

 <entry key="ext_stopwords">custom/ext_stopword.dic</entry>

 <!--用户可以在这里配置远程扩展字典 -->

 <entry key="remote_ext_dict">location</entry>

 <!--用户可以在这里配置远程扩展停止词字典-->

 <entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry>

</properties>

我们一般将需要自动更新的热词放在一个UTF8的txt文件里,再利用 nginx ,当 .txt 文件修改时,http server 会在客户端请求该文件时自动返回相应的 Last-ModifiedETag。可以另外做一个工具来从业务系统提取相关词汇,并更新这个 .txt 文件。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1天前
|
JSON 搜索推荐 数据挖掘
ElasticSearch的简单介绍与使用【入门篇】
这篇文章是Elasticsearch的入门介绍,涵盖了Elasticsearch的基本概念、特点、安装方法以及如何进行基本的数据操作,包括索引文档、查询、更新、删除和使用bulk API进行批量操作。
ElasticSearch的简单介绍与使用【入门篇】
|
3月前
|
SQL JSON API
ELK技术栈 - Elasticsearch 学习笔记(三)
ELK技术栈 - Elasticsearch 学习笔记(三)
67 0
|
1天前
|
JSON 测试技术 API
黑马商城 Elasticsearch从入门到部署 RestClient操作文档
这篇文章详细介绍了如何使用Java的RestHighLevelClient客户端与Elasticsearch进行文档操作,包括新增、查询、删除、修改文档以及批量导入文档的方法,并提供了相应的代码示例和操作步骤。
5 0
|
1天前
|
JSON 自然语言处理 Java
Elasticsearch从入门到部署 文档操作 RestAPI
这篇文章详细介绍了Elasticsearch中文档的增删改查操作,并通过Java的RestHighLevelClient客户端演示了如何通过REST API与Elasticsearch进行交云,包括初始化客户端、索引库的创建、删除和存在性判断等操作。
10 0
|
1天前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
10 0
|
22天前
|
存储 缓存 数据处理
ELK中 Elasticsearch和Logstash内存大小设置的考虑
ELK中 Elasticsearch和Logstash内存大小设置的考虑
60 0
|
3月前
|
监控 应用服务中间件 nginx
使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
ELK的架构有多种,本篇分享使用的架构如图所示: Beats(Filebeat) -> -> Elasticsearch -> Kibana,目前生产环境一天几千万的日志,内存占用大概 10G
210 4
|
3月前
|
安全 数据安全/隐私保护 Docker
ElasticSearch入门篇
该文档提供了一种在Docker中安装Elasticsearch、Kibana和IK分词器的步骤。首先创建名为`es-net`的网络,然后拉取Elasticsearch的7.12.1版本镜像。接着创建挂载点目录并启动Elasticsearch容器,配置`elasticsearch.yml`禁用安全验证。再拉取Kibana的7.12.1镜像,创建挂载目录并启动Kibana容器。最后,在Elasticsearch容器中安装IK分词器7.12.1版本,确保与Elasticsearch版本匹配。通过访问IP:9200和IP:5601测试Elasticsearch和Kibana是否运行成功。
27 0
|
3月前
|
存储 关系型数据库 MySQL
ElasticSearch 入门
【2月更文挑战第7天】ElasticSearch 入门 简介 ElasticSearch 的基本概念 ElasticSearch 的查询流程 ElasticSearch 的更新流程
57 2
|
3月前
|
存储 自然语言处理 搜索推荐
ElasticSearch入门篇
ElasticSearch入门篇