基本概念

基本概念

什么是elasticsearch

  • ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统

什么是Elastic Stack

  • Elastic Stack,前身缩写是ELK,就是ElasticSearch + LogStash + Kibana
    clipboard
  • ES的使用场景:
    • 网上商场,搜索商品.
    • ES配合logstash,kibana,日志分析.

elasticsearch基本概念

近实时(NRT)

  • ES是一个近实时的搜索引擎(平台),代表着从添加数据到能被搜索到只有很少的延迟。(大约是1s)

Index [索引]

  • 索引是具有某种相似特性的文档集合。例如,您可以拥有客户数据的索引、产品目录的另一个索引以及订单数据的 另一个索引。索引由一个名称(必须全部是小写)标识。在单个集群中,您可以定义任意多个索引。Index体现了 逻辑空间的概念,每个索引都有自己的mapping定义,用于定义包含文档的字段名和字段类型。Index体现了物理 空间的概念,索引中的数据分散在shard上。可以将其暂时理解为 MySql中的 database。
  • 索引的mapping和setting
    1. mapping:定义文档字段的类型
    2. setting:定义不同数据的分布

Mapping Type [类型]

  • 之前的版本中,索引和文档中间还有个类型的概念,每个索引下可以建立多个类型,文档存储时需要指定index和type。从6.0.0开始单个索引中只能有一个类型,7.0.0以后将将不建议使用 type(_doc),8.0.0 以后完全不支持。
  • 一个索引可以有多个类型。例如一个索引下可以有文章类型,也可以有用户类型,也可以有评论类型。在一个索引 中不能再创建多个类型,在以后的版本中将删除类型的整个概念。

Document [文档]

  • 文档是构建索引的基本单元。例如一条客户数据、一条产品数据、一条订单数据都可以是一个文档。文档以json格式表示,json是一种普遍使用的互联网数据格式。
  • 在index中可以存储任意数量的文档。虽然文档在物理上存储在索引文件中,但是必须在存储文档时将其分配给索引中特定的类型。

Node [节点]

  • Node 是组成集群的一个单独的服务器,用于存储数据并提供集群的搜索和索引功能。与集群一样,节点也有一个唯一名字,默认在节点启动时会生成一个uuid作为节点名,该名字也可以手动指定。此名称对于项目管理非常重要,用来在网络中标识哪个服务器与哪个节点对应。
  • 名称(默认是随机分配的),当然也可以 通过配置文件配置,或者在启动的时候,-E node.name=node1指定。此名称对于管理目的很重要,因为您希望确 定网络中的哪些服务器对应于ElasticSearch集群中的哪些节点。
  • 在Elasticsearch中,节点的类型主要分为如下几种:
    • master eligible节点:
      • 每个节点启动后,默认就是master eligible节点,可以通过node.master: false 禁止 master eligible可以参加选主流程,成为master节点 当第一个节点启动后,它会将自己选为master节点 每个节点都保存了集群的状态,只有master节点才能修改集群的状态信息
    • data节点
      • 可以保存数据的节点。负责保存分片数据,在数据扩展上起到了至关重要的作用
    • Coordinating 节点
      • 负责接收客户端请求,将请求发送到合适的节点,终把结果汇集到一起 每个节点默认都起到了Coordinating node的职责
    • 开发环境中一个节点可以承担多个角色,生产环境中,建议设置单一的角色,可以提高性能等

Shard and Replicas [分片和副本]

  • 一个索引可以存储大量的数据,甚至超出单个节点的磁盘存储空间。例如一个索引存储了数十亿文档,这些文件占用超过1T的磁盘空间,单台机器无法存储或者由于太多而无法提供搜索服务。
  • 为了解决这个问题,ES 提供了将单个索引分割成多个分片的功能。创建索引时,可以指定任意数量的分片。每个分片都是一个功能齐全且独立的“index”,且可以被托管到集群中的任意节点上。
  • 分片有两个重要作用:
    • 提供了容量水平扩展的能力;
    • 多个分片云允许分布式并发操作,可以大大提高性能;
  • 数据存储在哪个分片和搜索时文档聚合的机制完全由ES负责,这点对于用户来说是透明的。
  • 在网络/云环境中随时可能发生故障,如果能在这些异常(不管什么原因导致分片下线或丢失)发生时有一定的容错机制,那真真是极好的。因此,ES 允许我们为分片生成一个或多个副本。
  • 副本有两个重要作用:
    • 服务高可用:分片异常时,可以通过副本继续提供服务。因此分片副本不会与主分片分配到同一个节点;
    • 扩展性能:由于查询操作可以在分片副本上执行,因此可以提升系统的查询吞吐量;

linux安装

  • elasticsearch-7.3.2-linux-x86_64.tar.gz
  • 不能使用root用户启动
    • 在6.xx之前,可以通过root用户启动。但是发现黑客可以透过elasticsearch获取root用户密码,所以为了安全性, 在6版本之后就不能通过root启动elasticsearch
  • 修改配置
    • 修改jvm配置 看情况
      • vim config/jvm.options -Xms512m -Xmx512m
    • 修改network配置,支持通过ip访问
      • vim config/elasticsearch.yml
      • cluster.name=king
      • node.name=node-1
      • network.host: 0.0.0.0
      • http.port: 9200
      • cluster.initial_master_nodes: [“node-1”]
    • max_map_count [65530] is too low
      • vim /etc/sysctl.conf
      • vm.max_map_count=655360
      • sysctl -p
    • descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
      • vim /etc/security/limits.conf
      • soft nofile 65536`
      • hard nofile 131072`
      • soft nproc 2048`
      • hard nproc 4096`
      • 所有用户
      • nofile ‐ 打开文件的大数目
      • noproc ‐ 进程的大数目
      • soft 指的是当前系统生效的设置值
      • hard 表明系统中所能设定的大值
    • max number of threads [2048] for user [tongtech] is too low
      • vim /etc/security/limits.d/90-nproc.conf
      • * soft nproc 4096

kibana安装

  • kibana-7.3.2-linux-x86_64.tar.gz
  • vim kibana-7.3.2-linux-x86_64/config/kibana.yml
    server.port: 5601 
    server.host: "0.0.0.0" 
    i18n.locale: "zh‐CN"

基本概念
https://jiajun.xyz/2020/10/10/java/es/基本概念/
作者
Lambda
发布于
2020年10月10日
许可协议