欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ElasticSearch 基本概念以及安装(一)

程序员文章站 2022-07-01 09:20:06
...

ES基本概念

参考资料
https://segmentfault.com/a/1190000038278889
https://juejin.cn/post/6844904024357994504

  1. Index 索引
    相当于关系型数据库中,database的概念,但是我觉得从ES 7.x之后,Index更像关系型数据库中的表。

  2. Type 类型
    ES 7.x之前,一个Index中是可以创建多个Type的,但是ES 7.x之后,Index中默认只有 _doc 这个Type,而且ES 8.x之后,会移除 Type。

  3. Document 文档
    相当于数据库中行的概念

  4. Node 节点
    生产环境中,ES 都是集群方式部署的 。每一个 Node 就是 ES 的一个实例。根据功能的不同,可以分为三种节点:

    1. 主节点:职责是跟集群操作相关的内容。如创建索引或删除索引,维护集群中相关状态。每个节点都可以访问集群的状态,但是只有主节点可以修改集群状态。
    2. 数据节点:数据节点主要是储存数据的节点,对文档进行增删改查,聚合操作等等,数据节点对cpu,内存,io要求较高,当资源不够的时候,可以增加新的节点,很方便的进行数据拓展。
    3. 客户端节点:主要处理路由请求,分发索引的操作。实际上主节点和数据节点也有路由转发的功能,但是为了提高效率,还是建议生产环境单独创建客户端节点。
  5. Shard 分片
    一个索引可以存储远超当个结点硬件限制的大量数据,是因为ES提供了将索引划分多份的能力,每一份就是一个 Shard 分片。

  6. Inverted index 倒排索引
    也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。

    如,现在有10条(document 文档)记录,查找记录中 content 字段中包含 Hello 关键字的记录。而Hello 关键字在(document 文档)记录1、3、5中出现。那么倒排索引就会建立为 Hello 对应 1、3、5记录。因此在检索Hello时,通过倒排索引,知道了Hello在1、3、5文档中出现,从而可以直接找出相关文档。

    相关数据:

    id content
    1 Hello, Kate
    2 Wath day!
    3 Hello everyone!
    4 Hi, Kate
    5 Hello, Mama
    6 Today is Monday
    7 That’s right
    8 Wath a pity!
    9 All
    10 Bad day!

    倒排索引(列举部分字段)

    分词 位置列表
    Hello 1,3,5
    Kate 1,4
    Wath 2,8
    day 2,10

Docker 安装 ElasticSearch

  1. 下载镜像
    docker pull elasticsearch:7.4.2
    docker pull kibana:7.4.2 # 用于可视化检索数据
    
  2. 创建 ElasticSearch 实例
    mkdir -p /mydata/elasticsearch/config
    mkdir -p /mydata/elasticsearch/data
    echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
    chmod -R 777 /mydata/elasticsearch
    
    docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
    -e "discovery.type=single-node" \ # 单结点模式
    -e ES_JAVA_OPTS="-Xms512m -Xmx1024m" \ #初始化内存 512MB 最大占用 1024MB
    -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ #挂载配置文件
    -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \ # 挂载数据目录
    -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ # 挂载插件
    -d elasticsearch:7.4.2 # 指定启动的镜像
    
    docker update elasticsearch --restart=always # 设置开机自启动
    
    docker logs container_id # 查看日志
    
    systemctl restart docker # 重启docker
    
  3. 创建 Kibana 实例
    docker run --name kibana -e ELASTICSEARCH_HOSTS="http://ip:9200" -p 5601:5601 -d kibana:7.4.2
    
    访问 kibana :http://ip:5601