赞
踩
es是一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控,es易于扩展,可以轻松扩展到上百台服务器,处理PB(1PB=1024TB 1TB= 1024GB)级别的数据,es自身携带分布式协调管理功能,但仅支持JSON文件格式
在Es中一个索引对应一组相关文档的存储单元,可以被看作是一种类似于数据库中的表结构,用于存储相类似的文档,每个文档都属于一个索引,索引中的文档用于被搜索和分析。
索引分片是将一个完整的索引分成多个的过程,每个分片本身是一个独立的索引,拥有自己的设置、映射、文档。Es通过将索引划分为多个分片来允许大规模数据存储,并且能够水平扩张,每个分片可以分布在集群的不同节点上,默认情况下每个索引包含五个主分片。
索引副本是每个分片的一个复制品用于提供冗余和故障的回复副本分布在不同的节点上从而增加了系统的可靠性和容错能力。
节点是集群中的单个服务器,用于存储数据并参与集群的索引和搜索功能。每个节点都有自己的名称和唯一标识符。
集群是由一个或多个节点组成的一组服务器,它们共同存储项目的整个数据,集群提供可高可用性和横向扩展性。
分片是将索引中的数据分割成多个部分,用于提高性能和扩展性每个分片可以被存储在集群中的一个或多个节点上。
复制是为了数据的高可用性和容错性,每个分片都会有一个或多个副本分片,这些分片会被存储在不同的节点上。
索引是用于存储数据的地方类似于关系型数据库中的数据可以,它是一种用于存储相似性质的文档的数据结构。
类型在ES6.0之前用于组织索引内部文档的一种方式。在ES7.0之后已经被废弃,推荐使用单一索引引用字段代替。
文档是ES中的基本数据单元,类似于关系型数据库中的行,每个文档都是一个JSON对象,它们被存储在索引中并可以被搜索。
字段是ES中文档的组成部分,类似于关系型数据库中的列,每个字段都有自己的数据类型(文本型、数值型等),并且包含特定的数据。
映射定义了索引中的,每个字段的数据类型和属性,它相当于关系型数据库中的模式,告诉ES如何处理索引的每个字段。
- PUT /baidu
- {
- "settings": {
- "number_of_shards": 2,//主分片
- "number_of_replicas": 2//副分片
- },
- "mappings": {
- "properties": {
- "title":{
- "type": "text"
- }
- }
- }
- }
- POST /my_es/_doc
- {
- "title":"震惊,某男子竟于小猪干这件事。。。。",
- "content":"男子天天给小猪吃昂贵的水果,小猪更可爱了",
- "author":"王五",
- "time":"2023-12-18T11:44:20"
- }
GET /my_es/_search
_doc:用于早期的ES版本中同一个索引中单独集合映射类型。从8.x版本开始已全面废弃。
_index:创建新索引、是创建一个命名空间将相关文档聚合在一起
_create:创建新索引、是创建一个新的文档并将其添加到指定索引中
_update:用于更新文档中的一部分类容
_delete:删除文档
- GET /my_es/_search
- {
- "query": {
- "match": {
- "title": "猪" //title带有猪字的都查出来
- }
- }
- }
- {
- "took" : 1,//请求耗时
- "timed_out" : false,//是否超时
- "_shards" : {//分片信息(包含了成功的分片数量和失败的分片数量)
- "total" : 2,//总分片数(总命中数)
- "successful" : 2,//搜索成功的分片数
- "skipped" : 0,//没有搜索或跳过的分片数
- "failed" : 0//搜索失败的分片数
- },
- "hits" : {//搜索结果集
- "total" : {//返回多少数据
- "value" : 1,//一共一条数据
- "relation" : "eq"//过滤语法
- },
- "max_score" : 0.8630463,//最高匹配得分
- "hits" : [
- {
- "_index" : "taobao_goods",//索引名
- "_type" : "_doc",//文档类型(8.X已弃用)
- "_id" : "98PrgIwBM5jPvpt7_k_k",//唯一标识符
- "_score" : 0.8630463,//匹配度得分
- "_source" : {//实际内容
- "id" : "1",
- "name" : "康师傅酸菜牛肉",
- "description" : "酸酸甜甜",
- "price" : "5",
- "stock" : "100"
- }
- }
- ]
- }
- }
- GET /taobao_goods/_search
- {
- "query": {
- "bool": {//多条件查询度一种方式
- "must": [//必须满足一下条件相当于sql中的and//查询语气
- {
- "match": {
- "name": "康师傅"
- }
- },
- {
- "match": {
- "description": "酸酸"
- }
- }
- ]
- }
- }
- }
_doc:覆盖方式完成更新(8.X版本之后移除)
- POST /taobao_goods/_doc/-MPsgIwBM5jPvpt7k0-P //文档的_id
- {
- "id": "2",
- "name": "统一红烧牛肉面",
- "description": "好吃不上火",
- "price": "5",
- "stock": "70"
- }//这种写法会重写原有数据结构(慎用)
_update:非覆盖方式完成更新,只有修改功能
- POST /taobao_goods/_update/-MPsgIwBM5jPvpt7k0-P
- {
- "doc": {
- "price": "5.5"
- }
- }//只会修改对应字段
-
- //如果没有这个字段会直接添加这个字段
- DELETE /taobao_goods/_doc/98PrgIwBM5jPvpt7_k_k//跟文档_id
- 通过ES id删除
- POST /taobao_goods/_delete_by_query
- {
- "query":{
- "match":{
- "id":"2"
- }
- }
- }//通过mysql id删除
-
-
- //删除所有match_all
- POST /taobao_goods/_delete_by_query
- {
- "query":{
- "match_all":{
- }
- }
- }
docker pull elasticsearch:xx #版本尽量大于7.12.1
docker network create es-network
cd usr
mkdir elasticsearch
cd elasticsearch
mkdir data
mkdir plugins
#效果
chmod -R 777 elasticsearch
- 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虚拟机堆内存最小为50mb最大为512mb
-v es-data:/usr/elasticsearch/data \ 挂载数据目录卷
-v es-plugins:/usr/elasticsearch/plugins \ 挂载插件目录卷
docker.elastic.co/elasticsearch/elasticsearch:7.12.1 指定运行的镜像:版本
ps:如果运行不了查看是否有多余空格
curl http://localhost:9200
#返回
1.进入es容器
2.进入/usr/share/elasticsearch/config路径
3.编辑elasticsearch.yml配置文件
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
4.ctrl+qp
5.重启es容器
6.再次进入容器
7.设置密码
./bin/elasticsearch-setup-passwords interactive
8.退出,进入宿主机再次重启容器,完成
9.验证:使用浏览器访问 ip:9200
弹出登录框 用户名默认 :elastic
最后返回值
docker pull kibana:7.12.1
docker network create kibana-network
- 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 \ 设置kibana网络
-e ELASTICSEARCH_HOSTS=http://es的服务器ip地址:9200 \
-p 5601:5601 \ 主机容器之间端口映射
docker.elastic.co/kibana/kibana:7.12.1 运行的镜像名:版本号
bash-4.4$ pwd
/usr/share/kibana/config
vi kibana.yml
加入
i18n.locale: "zh-CN"
elasticsearch.username: "elastic" #用户名
elasticsearch.password: "xxxxx" #为es配置的密码要相同
输入用户名和密码进入elastic
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。