基本概念
基本概念
什么是elasticsearch
- ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统
什么是Elastic Stack
- Elastic Stack,前身缩写是ELK,就是ElasticSearch + LogStash + Kibana

- ES的使用场景:
- 网上商场,搜索商品.
- ES配合logstash,kibana,日志分析.
elasticsearch基本概念
近实时(NRT)
- ES是一个近实时的搜索引擎(平台),代表着从添加数据到能被搜索到只有很少的延迟。(大约是1s)
Index [索引]
- 索引是具有某种相似特性的文档集合。例如,您可以拥有客户数据的索引、产品目录的另一个索引以及订单数据的 另一个索引。索引由一个名称(必须全部是小写)标识。在单个集群中,您可以定义任意多个索引。Index体现了 逻辑空间的概念,每个索引都有自己的mapping定义,用于定义包含文档的字段名和字段类型。Index体现了物理 空间的概念,索引中的数据分散在shard上。可以将其暂时理解为 MySql中的 database。
- 索引的mapping和setting
- mapping:定义文档字段的类型
- 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的职责
- 开发环境中一个节点可以承担多个角色,生产环境中,建议设置单一的角色,可以提高性能等
- master eligible节点:
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
- 修改jvm配置 看情况
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/基本概念/