ElasticSearch入门学习

什么是ElasticSearch?

        ES是一个开源的分布式搜索引擎,可以用来实现搜索,日志统计,系统监控,ES易于拓展,可以轻松拓展到上百台服务器,处理PB(1PB=1024TB 1TB=1024GB)级别的数据。ES自身携带分布式协调管理功能,但仅支持json文件格式。

ES理论:

        1.索引:在ES中一个索引对应一组相关文档的存储单元,可以被看作是一种类似于数据库中的表结构,用于存储相类似的文档 每个文档都属于一个索引 索引中的文档用来被搜索和分析。

        2.索引分片:索引分片是将一个完整的索引分成多个的过程,每个分片本身就是一个独立的索引,拥有自己的设置 映射 文档。ES通过将索引划分为多个分片来允许大规模数据存储,并且能够水平扩展,每个分片可以分布在集群的不同节点上,默认情况下每个索引包含五个主分片。

        3.索引副本:索引副本是每个分片的一个复制品,用于提供冗余和故障的恢复,副本分布在不同的节点上 从而增加了系统的可靠性和容错能力。

ElasticSearch核心概念

        1.节点

                节点是集群中的单个服务器,用于存储数据并参与集群的索引和搜索功能。每个节点都有自己的名称和唯一标识符。

        2.集群

                集群是由一个或多个节点组成的一组服务器,它们共同存储项目的整个数据,集群提供了高可用性和横向扩展性。

        3.分片和复制

                分片是将索引中的数据分割成多个部分,用于提供性能和扩展性,每个分片可以被存储在集群中的一个或多个节点上。

                复制是为了数据的高可用性和容错性,每个分片都会有一个或多个副本分片,这些分片会被存储在不同的节点上。

        4.索引

                索引是用于存储数据的地方,类似于关系型数据库中的数据库,它是一中用于存储相似性质的文档的数据结构。     

        5.类型   

                类型在ES6.0之前用于组织索引内部文档的一种方式,在ES7.0版本之后已经被废弃,推荐使用单一索引多字段代替。

        6.文档

                文档是ES中的基本数据单元,类似于关系型数据库中的行(也就是一条数据),每个文档都是一个JSON对象,它们被存储在索引中,并可以被搜索。

        7.字段

                字段是ES中文档的组成部分,类似于关系型数据库中的列,每个字段都有自己的数据类型(比如文本型,数值型等),并且包含特定的数据。

        8.映射

                映射定义了索引中的每个字段的数据类型和属性,它相当于关系型数据库中的模式,告诉ES如何处理索引的每个字段。

ES容器创建

1.拉镜像 尽量大于7.12.1版本

2.创建ES的网络

docker network create es-network

3.找到Usr目录 创建ElasticSearch目录 进入ElasticSearch目录 创建data和plugins文件夹

4.修改挂载文件的权限

5.创建容器

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设置访问密码

(1)进入容器找到此目录

/usr/share/elasticsearch/config

(2)通过vi编辑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

(3)回到宿主机(Ctrl+Q+P),重启ES容器

(4) 再次进入容器输入以下命令 设置密码

./bin/elasticsearch-setup-passwords interactive

(5)输入十几次一样的密码

(6)退回宿主机(Ctrl+Q+P),再次重启ES容器

  (7) 访问网站ip地址:9200 显示以下网页表示创建成功 用户名默认为elastic

安装可视化工具kibana

1.拉取镜像 和ES对应

docker pull kibana:7.12.1

2.创建kibana的网络

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

4.进入容器

docker exec -it 容器ID /bin/bash

5.找到/usr/share/kibana这个目录下的kibana.yml文件

6.编辑这个文件添加以下代码

i18n.locale: "zh-CN"
elasticsearch.username: "elastic"
elasticsearch.password: "xxxxx"

7.退出容器,重启容器 就可以访问网页了

创建索引 

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"}
   }
 }
}

添加文档

POST /my_es/_doc
{
    "title":"",//标题
    "content":"",//内容
    "author":"",//作者
    "time":""//时间
}

语法规则 

_doc:用于早期的ES版本中,同一个索引中单独集合映射內型,从8.x版本开始已全面废弃。

_index:创建新索引,index索引是创建一个命名空间将相关文档聚合在一起

_create:创建新索引,是创建一个新的文档并将其添加到指定索引中

_update:用于更新文档中的一部分内容

_delete:删除文档

查询所有

GET /my_es/_search

条件查询

GET /my_es/_search
{
  "query": {
    "match": {
      "title": ""
    }
  }
}

多条件查询 

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:表示条件必须匹配,常用于过滤操作 

更新索引

_doc:覆盖方式完成更新,8.0之后移除

POST /taobao_good_doc/FRnsgIwBYHONpmBOz_8e
{
     "price":"1"
}
//会重写原有数据结构(慎用)

_update:非覆盖方式完成更新,只有修改功能

POST /taobao_good_update/FRnsgIwBYHONpmBOz_8e
{
  "doc":{
     "price":"1"
  }
}
//只会修改对应的字段
//如果没有这个字段会直接添加

删除文档 

DELETE /taobao_goods/_doc/FRnsgIwBYHONpmBOz_8e

//通过ES的ID删
POST /taobao_goods/_delete_by_query
{
  "query":{
    "match":{
      "id":"3"
    }
  }
}
//通过Mysql的ID删
POST /taobao_goods/_delete_by_query
{
  "query":{
    "match_all":{}
  }
}

//删除所有

 

返回结果 

{
  "took" : 1, //操作花费的毫秒数,请求耗时
  "timed_out" : false, //是否超时
  "_shards" : { //分片信息(包含了成功的分片数量和失败的分片数量)
    "total" : 2, //总分片数(总命中数)
    "successful" : 2, //搜索成功的分片数
    "skipped" : 0, //没有搜索或跳过的分片数
    "failed" : 0 //搜索失败的分片数
  },
  "hits" : { //搜索结果集
    "total" : { //返回多少数据
      "value" : 1, //一共一条数据
      "relation" : "eq" //过滤语法
    },
    "max_score" : 1.5193009, //最高匹配得分
    "hits" : [
      {
        "_index" : "taobao_goods",
        "_type" : "_doc", //文档类型(8.0已弃用)
        "_id" : "FBnsgIwBYHONpmBONv_b", //唯一标识符
        "_score" : 1.5193009, //匹配度得分
        "_source" : { //实际内容
          "id" : "1",
          "name" : "劲仔小鱼仔",
          "description" : "好吃",
          "price" : "1",
          "stock" : "50"
        }
      }
    ]
  }
}

  • 22
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于学习Elasticsearch,你可以按照以下步骤进行: 1. 首先,你可以从Docker Hub上获取Elasticsearch的镜像。你可以使用以下命令来拉取特定版本的Elasticsearch镜像: ``` docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2 ``` 2. 接下来,你可以创建一个简单的Dockerfile来构建一个Elasticsearch容器。Dockerfile的内容可以参考以下示例: ``` FROM docker.elastic.co/elasticsearch/elasticsearch:7.6.2 COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /usr/share/elasticsearch/config/ ``` 这个Dockerfile会将你的自定义配置文件`elasticsearch.yml`复制到Elasticsearch容***-analysis-ik`项目。该项目提供了一个支持中文分词的插件,你可以在以下链接找到它: ``` https://github.com/medcl/elasticsearch-analysis-ik ``` 你可以根据项目的文档和示例,自定义和配置分词器和分析器以满足你的需求。 通过上述步骤,你可以开始学习和使用Elasticsearch,并根据需要进行自定义配置和扩展。希望对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ES(Elasticsearch)入门学习教程](https://blog.csdn.net/m0_55070913/article/details/124243790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ElasticSearch学习总结(基础篇,可学习,可复习)](https://blog.csdn.net/Gaowumao/article/details/124484971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值