安装ElasticSearch(7.9.3)
由于ElasticSearch是基于JAVA的客户端,因此就部署过程而言,是具有平台无关性的
单机安装
下载->解压->修改配置->启动
下载
略
解压
略
修改配置
修改config/elasticsearch.yml(可选)
path.data: #当前环境存放数据的路径
path.logs: #当前环境存放日志的路径
network.host: 0.0.0.0 #任何计算机可访问( **必选**)
cluster.name: #集群名称
node.name: #节点名称
cluster.initial_master_nodes: ['节点名称'] #在集群中所有的master列表
xpack.ml.enabled: false #关闭xpack插件,用于机器学习
http.cors.enabled: true
http.cors.allow-origin: "*" #允许跨域
修改config/jvm.options (可选)
-Xms256m #默认1g
-Xmx256m #默认1g
启动
1.新建用户
groupadd esGroup #添加组
useradd -m -g esGroup elasticsearch #新增用户,m:自动建立用户登入目录,g:指定用户所属群组
passwd elasticsearch #换行设置密码 (1qaz!QAZ)
chown -R elasticsearch elasticsearch-7.9.3 #进行授权
2.使用新建的用户启动Es(es不允许root启动)
sh bin/elasticsearch
可能出现的问题:
- elasticsearch-env: line 122: syntax error near unexpected token `<’
解决方案:
将 < 改为 三连: <<<,并去除括号 ,<<<es
- ElasticsearchException[Failure running machine learning native code. This could be due to running on an unsupported OS or distribution, missing OS libraries, or a problem with the temp directory. To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].]
解决方案:
配置文件加入如下配置:
xpack.ml.enabled: false #关闭xpack插件,用于机器学习
或者,在linux机器上,安装xpack库,具体过程,参看 [Linux安装ELK–XPack](https://www.cnblogs.com/blogjun/articles/8072123.html)
过程比较繁琐,除非需要用到,否则不建议安装,提高了入手难度
安装分词器
下载->拷贝解压->重启
下载
略
拷贝解压
mv elasticsearch-analysis-ik-7.9.3.zip elasticsearch-7.9.3/plugins/ #操作需要切换到root
cd elasticsearch-7.9.3/plugins/
mkdir elasticsearch-analysis-ik-7.9.3
mv elasticsearch-analysis-ik-7.9.3.zip elasticsearch-analysis-ik-7.9.3
cd elasticsearch-analysis-ik-7.9.3/
unzip elasticsearch-analysis-ik-7.9.3.zip
重启
略
集群安装
同单机,主要的设置几个属性,特作如下说明
discovery.seed_host: ["es应用1","es应用2","es应用3","es应用4",...] #设置集群中,所有es应用的地址,这里的应用地址为 ip + 端口号
cluster.initial_master_nodes: ["节点名称1","节点名称2"] #设置当前集群中为master的端点
安装kibana(7.9.3)
参考地址: Linux安装kibana
下载 -> 解压 -> 配置 -> 启动
-
下载
略
-
解压
略
-
配置
vim config/kibana.yml
server.port: 5601 server.host: "0.0.0.0" elasticsearch.host: ["http://192.168.17.212:9200"] # 注意,直接填地址如果连接超时,可以直接采用localhost kibana.index: ".kibana" i18n.locale: "zh-CN" #kibana默认文字是英文,变更成中文
-
启动
添加用户
groupadd kibanaGroup #添加组 useradd -m -g kibanaGroup kibana #新增用户,m:自动建立用户登入目录,g:指定用户所属群组 passwd kibana #换行设置密码 (1qaz!QAZ) cd /home chown -R kibana kibana-7.10.0-linux-x86_64 #进行授权
sh bin/kibana
启动时间在三到五分钟的样子,要稍微等一会
kibana操作
熟悉常用操作项
具体操作细节,还是需要参照官网,这里只是来一个初步认识,避免太过陌生导致产生比较强烈的抵制感.
es命令行操作
网上说,不建议将数据库与es作对比,原因是某些概念不一致。
这里认为,为了快速的学习相关概念,进行类比学习还是很值得推荐的一种方式,能有效降低学习门槛,因此暂时还是根据数据库操作的思路进行展开(根本原因在于,操作流程具有一定的普遍通用性)。
数据库操作顺序: 建库 -> 建表 -> 数据更新(增删改) -> 数据查询(查)。 大可按照这个思路进行学习,正如 elasticsearch 的tagline所说: you know,just for search!
换言之,它的复杂性在于lucene本身对索引的构建以及维护,而非客户端(es)的基本操作。
这里整理几个写的比较清晰的文章地址。
elasticsearch菜鸟教程 by bookwiki 很详细,成体系,但是是 es5的版本;
Elasticsearch 7.7.0 基本操作-基于 CMD 命令行
建库(_doc端点,__mapping端点)(索引库)
自己的理解:
- 由于es是基于文档的非结构型数据,因此类似于 关系型数据库的 建库操作则是一个 可选 操作。 对应于 es中,则是 mapping映射。
- 如果没有进行mapping映射,则会根据默认的设置,包括使用相应的分词器,是否索引,是否存储,等等.分词器将直接影响我们的搜素结果,中文 跟 英文的分词策略是不一致的 。
- 由于非结构型数据的原因,即使设置了 mapping映射,也能够动态的进行修改,可以通过属性禁用。它的表现就相当于 一张mysql表中,相邻的两条数据的 数据列 不一致
POST /movies/_doc
{
"title":"the godfather11",
"director":"Francis Ford Copoia11",
"year": 1973
}
数据更新(_doc端点)
自己的理解:
- 数据更新操作是通过 http方法来的,POST新增或者修改(根据id是否存在),PUT修改,DELETE 删除;
PUT /movies/_doc/RqlV2XUBafRrsJLpu11a
{
"title":"the godfather112",
"director":"Francis Ford Copoia33",
"year": 1974
}
DELETE /movies/_doc/1
{
"title":"the godfather112",
"director":"Francis Ford Copoia33",
"year": 1974,
"param1":"111",
"param2":"222"
}
数据查询(_search端点)
post /movies/_search
{
"query":{
"query_string":{
"query":"kill"
}
}
}