一、什么是Elasticsearch?
ES是一个开源分布式搜索引擎可以用来实现搜索、日志统计、分析、系统监控,ES易于扩展,可以轻松的扩展到上百台服务器,处理PB(1PB = 1024TB,1TB = 1024GB)级别的数据。ES自身携带分布式管理功能,但仅支持JSON文件模式。
二、下载安装步骤
(一)、安装elasticsearch容器
1.拉镜像 docker pull 镜像尽量大于 7.12.1
docker pull elasticsearch:7.12.1
2.拉取es 网络
docker network create es-network
3.找到usr在usr目录创建文件夹elasticsearch,进去在创建plugins、data文件夹
.
4.在usr目录修改权限
5.创建容器(elasticsearch )
ps: 如果运行不了检查是否有多余空格
docker run -d \
--name elasticsearch \
--net=es-network \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e xpack.security.authc.api_key.enabled=true \
-e "ES_JAVA_OPTS=-Xms50m -Xmx512m" \
-v es-data:/usr/elasticsearch/data \
-v es-plugins:/usr/elasticsearch/plugins \
docker.elastic.co/elasticsearch/elasticsearch:7.12.1
docker run -d \ //后台运行
--name elasticsearch \ // 给容器起一个别名
--net=es-network \ //指定容器连接到名为 es-network 的网络上
-p 9200:9200 \ //主机与容器之间的端口映射,9200用于程序调用使用
-p 9300:9300 \ //主机与容器之间的端口映射,9300用于es集群之间的通信
-e "discovery.type=single-node" \ //配置单节点启动发现的环境变量
-e xpack.security.authc.api_key.enabled=true \ //启动api秘钥认证功能
-e "ES_JAVA_OPTS=-Xms50m -Xmx512m"\//指定java虚拟机最小堆内存最小50M,最大512M
-v es-data:/usr/elasticsearch/data \ //挂载数据目录卷
-v es-plugins:/usr/elasticsearch/plugins \ //挂载插件目录卷
docker.elastic.co/elasticsearch/elasticsearch:7.12.1 //指定运行的镜像:版本
6.校验是否安装成功
curl http://localhost:9200
7.给es设置访问密码
7.1:进入容器(elasticsearch)找到 /usr/share/elasticsearch/config
docker exec -it 2df4aaf8e08b /bin/bash
7.2:通过vi编辑elasticsearch.yml文件
在后面添加
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
7.3:ctrl + p + q 回到宿主机再重启ES容器
docker restart 2df4aaf8e08b
7.4:再次进入容器
docker exec -it 2df4aaf8e08b /bin/bash
然后运行这个,设置密码(输入多次,建议一致)
./bin/elasticsearch-setup-passwords interactive
7.5:再次回到宿主机再重启ES容器
校验是否成功
http:// ip :9200
(二)、安装kibana容器
1.拉取kibana镜像 :版本和elasticsearch一致
docker pull kibana:7.12.1
2.创建网络
docker network create kibana-network
3.执行容器创建命令
docker run -d \
--name kibana \
--net=kibana-network \
-e ELASTICSEARCH_HOSTS=http://es的服务器ip地址:9200 \
-p 5601:5601 \
docker.elastic.co/kibana/kibana:7.12.1
docker run -d \
--name kibana \
--net=kibana-network \
-e ELASTICSEARCH_HOSTS=http://es的服务器ip地址:9200 \
-p 5601:5601 \
docker.elastic.co/kibana/kibana:7.12.1
4.开放 5601 端口
5.校验安装成功访问 http://ip:5601
6.进入kibana容器
docker exec -it 容器id /bin/bash
7.找到 /usr/share/kibana/config 这个目录下的kibana.yml文件
8.修改配置文件
vim kibana.yml
在最后一行回车加入
i18n.locale: "zh-CN"
elasticsearch.username: "elastic"
elasticsearch.password: "密码"
9.退出容器,重启容器
10. 访问 http://ip:5601
三、ES理论
3.1名词解析
1.索引:
在ES中一个索引对应一组相关文档的存储单元,可以被看作是一种类似于数据库中表结构,
用于存储相类似的文档,每个文档都属于一个索引,索引中的文档用来被搜索或分析。
2.索引分片:
索引分片是将一个完整的索引分成多个的过程,每个分片本身就是一个独立的索引,拥有自 己的设置、映射、文档。ES通过将索引,划分为多个分片来允许大规模数据存储,并且能够水 平扩展,每个分片可以分布在集群的不同节点上,默认情况下每个索引包含五个主分片。
3.索引副本:
索引副本是每个分片的一个复制品,用于提供冗余和故障的恢复,副本分布在不同的节点上,从而增加了系统的可靠性和容错能力。
3.2ElasticSearch核心概念
1.节点
节点是集群中的单个服务器,用于存储数据并参与集群的索引和搜索功能。每个节点都有自己的名称和唯一标识符,
2.集群
集群是由一个或多个节点组成的一组服务器,它们共同存储项目的整个数据,集群提供了可用性和横向扩展性。
3.分片和复制
分片是将索引中的数据分割成多个部分,用于提高性能和扩展性,每个分片可以被存储在集群中的一个或多个节点上。
复制是为了数据的高可用性和容错性,每个分片都会有一个或多个副本分片,这些分片会被存储在不同的节点上。
4.索引:
索引是用于存储数据的地方,类似于关系型数据库中的数据库,他是一种用于存储相似性质的文档的数据结构。
5.类型
类型在ES 6.0之前用于组织索引内部文档的一种方式,在ES 7.0版本之后已经被废弃,推荐使用单一索引多字段代替。
6.文档
文档是ES中的基本数据单元,类似于关系型数据库的行,每个文档都是一个JSON对象,它们被存储在索引中并可以被搜索。
7.字段
字段是ES中文档的组成部分,类似于关系型数据库中的列,每个字段都有自己的数据类型(比如 文本型、数值型等),并且包含特定的数据。
8.映射
映射定义了索引中的每个字段的数据类型和属性,它相当于关系型数据库中的模式,告诉ES 如何处理索引的每个字段。
3.3 创建索引
PUT /my_es
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 2
},
"mappings": {
"properties": {
"title":{"type":"text"},
"content":{"type":"text"},
"author":{"type": "text"},
"time":{"type": "date"}
}
}
}
PUT /my_es // 索引名(数据库名)
{
"settings": {
"number_of_shards": 2, //主分片
"number_of_replicas": 2 // 副分片
},
"mappings": {
"properties": {
"title":{"type":"text" // 设置类型}, //属性
"content":{"type":"text"},
"author":{"type": "text"},
"time":{"type": "date"}
}
}
}
3.4 添加文档
POST /my_es/_doc
{
"title":"无故凶人",
"content":"一女子无缘无故凶人给出的理由居然你别给我讲话",
"author":"manyue",
"time":"2023-12-18T10:30:01"
}
语法规则:
_doc : 用于早期的ES版本中,同一个索引中单独集合映射类型从8.X版本开始已全面配齐。
_index : 创建新索引。 index 是创建一个命名空间,将相关文档聚集在一起。
_create :创建新索引。 create 是创建一个新的文档,并将其添加到指定索引中
_update : 用于更新文档中的一部分内容。
_delete : 删除文档。
3.5 查找文档
GET /my_es/_search
3.6 条件查询
GET /my_es/_search
{
"query": {"match": {
"title": "白象" // "字段":"查找内容"
}}
}
3.7 多条件查询
GET /taobao_goods/_search
{
"query": {
"bool": { // 多条件查询的一种方式
"must": [ //必须满足以下条件相当于sql 中的 AND
{"match": {"name": "白象"}},
{"match": {"description": "酸"}}
]
}
}
}
1. must : 必须都匹配相当于逻辑中的 AND
2. must_not : 必须条件都不匹配 相当于逻辑中的 not
3.should : 表示条件可以匹配 ,但不是必须相当于逻辑上的or
4.filter : 表示条件必须匹配,常用于过滤操作
3.8 返回结果
{
"took" : 1, // 操作花费的毫秒数,请求耗时
"timed_out" : false, // 是否超时
"_shards" : { //分片信息(包含了成功的分片数量,和失败的分片数量)
"total" : 2, // 总分片数 (总命中数)
"successful" : 2, // 搜索成功的分片数
"skipped" : 0, //没有搜索或跳过的分片数
"failed" : 0 // 搜索失败的分片数
},
"hits" : { // 搜索结果集
"total" : { // 返回多少数据
"value" : 1, // 一共 一条数据
"relation" : "eq" // 过滤语法
},
"max_score" : 0.5753642, // 最高匹配得分
"hits" : [
{
"_index" : "taobao_goods", // 索引名
"_type" : "_doc", // 文档类型(8.0已弃用)
"_id" : "h3jtgIwBqohmmXpgoXch", // id (唯一标识符)
"_score" : 0.5753642, // 匹配度得分
"_source" : { // 实际内容
"id" : "3",
"name" : "白象牛肉面",
"description" : "好吃",
"price" : "4.5",
"stock" : "27"
}
}
]
}
}
3.9 更新内容(修改数据)
_doc : 覆盖方式完成更新(8.0之后移除)
_update : 非覆盖方式完成更新
POST /taobao_goods/_doc/h3jtgIwBqohmmXpgoXch
{
"price":"3"
}
//这种写法会重写原有数据结构(慎用)
ps : h3jtgIwBqohmmXpgoXch _id(唯一标识符)
POST /taobao_goods/_update/h3jtgIwBqohmmXpgoXch
{
"doc":{
"price":"3"
}
}
// 这种只会修改对应的字段
// 如果没有这个字段会直接添加这个字段
4.0 删除文档
// 通过 ES id 删除
DELETE /taobao_goods/_doc/hnjtgIwBqohmmXpgKHfX // (_id)
// 通过 mysql id 删除
POST /taobao_goods/_delete_by_query
{
"query":{
"match":{"id":"3"}
}
}
// 删除所有
POST /taobao_goods/_delete_by_query
{
"query":{
"match_all":{}
}
}
可视化工具
es-client: ES查询客户端,elasticsearch可视化工具文章来源:https://www.toymoban.com/news/detail-773028.html
ES 核心思想
文章来源地址https://www.toymoban.com/news/detail-773028.html
到了这里,关于Elasticsearch下载安装配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!