Elasticsearch的基本使用

安装java环境

brew cask install java

下载es kibana文件包

https://www.elastic.co/cn/downloads/elasticsearch

https://www.elastic.co/cn/downloads/kibana

下载中文分词包

下载完成后,在es的plugins目录下新建ik文件夹,然后把解压文件放到这里

https://github.com/medcl/elasticsearch-analysis-ik/releases

注意:包的版本号一定要一致,如果ik的版本过低,可以手动修改ik的配置文件中的版本号。

运行es

进入到es的bin目录,执行 bash elasticsearch命令开启服务,访问127.0.0.1:9200可以查看基本信息。

{
name: "wmuideMacBook-Pro.local",
cluster_name: "elasticsearch",
cluster_uuid: "wuRDchEhR4iVKb37FjJSCw",
version: {
number: "7.4.0",
build_flavor: "default",
build_type: "tar",
build_hash: "22e1767283e61a198cb4db791ea66e3f11ab9910",
build_date: "2019-09-27T08:36:48.569419Z",
build_snapshot: false,
lucene_version: "8.2.0",
minimum_wire_compatibility_version: "6.8.0",
minimum_index_compatibility_version: "6.0.0-beta1"
},
tagline: "You Know, for Search"
}

run kinbna

cd bin
bash kibana
# visit 127.0.0.1:5601

es的基本概念

集群(cluster)

代表一个集群,集群中有多个节点(node),其中有一个为主节点,这个主节点是 可以通过选举产生的,主从节点是对于集群内部来说的。es 的一个概念就是去中心 化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看 es 集 群,在逻辑上是个整体,你与任何一个节点的通信和与整个 es 集群通信是等价的。

索引(index)

ElasticSearch 将它的数据存储在一个或多个索引(index)中。用 SQL 领域的术 语来类比,索引就像数据库,可以向索引写入文档或者从索引中读取文档,并通过 ElasticSearch 内部使用 Lucene 将数据写入索引或从索引中检索数据。
文档(document)

文档(document)

文档是 ElasticSearch 中的主要实体。对所有使用 ElasticSearch的案例来说,他们最终都可以归结为对文档的搜索。文档由字段构成。

映射(mapping)

所有文档写进索引之前都会先进行分析,如何将输入的文本分割为词条、哪些词条 又会被过滤,这种行为叫做映射(mapping)。一般由用户自己定义规则。

类型(type)

每个文档都有与之对应的类型(type)定义。这允许用户在一个索引中存储多种文档类型,并为不同文档提供类型提供不同的映射。

分片(shards)

代表索引分片,es 可以把一个完整的索引分成多个分片,这样的好处是可以把一个 大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索 引创建前指定,并且索引创建后不能更改。5.X 默认不能通过配置文件定义分片

副本(replicas)

代表索引副本,es 可以设置多个索引的副本,副本的作用一是提高系统的容错性, 当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高 es 的查询效率, es 会自动对搜索请求进行负载均衡。

数据恢复(recovery)

代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索 引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

数据源(River)

代表 es 的一个数据源,也是其它存储方式(如:数据库)同步数据到 es 的一个方 法。它是以插件方式存在的一个 es 服务,通过读取 river 中的数据并把它索引到 es 中,官方的 river 有 couchDB 的,RabbitMQ 的,Twitter 的,Wikipedia 的,river 这个功能将会在后面的文件中重点说到。

网关(gateway)

代表 es 索引的持久化存储方式,es 默认是先把索引存放到内存中,当内存满了时 再持久化到硬盘。当这个 es 集群关闭再重新启动时就会从 gateway 中读取索引数 据。es 支持多种类型的 gateway,有本地文件系统(默认),分布式文件系统,Hadoop 的 HDFS 和 amazon 的 s3 云存储服务。

自动发现(discovery.zen)

代表 es 的自动发现节点机制,es 是一个基于 p2p 的系统,它先通过广播寻找存在 的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

5.X 关闭广播,需要自定义

通信(Transport)

代表 es 内部节点或集群与客户端的交互方式,默认内部是使用 tcp 协议进行交互, 同时它支持 http 协议(json 格式)、thrift、servlet、memcached、zeroMQ 等 的传输协议(通过插件方式集成)。

节点间通信端口默认:9300-9400

分片和复制(shards and replicas)

一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有 10 亿文档的索 引占据 1TB 的磁盘空间,而任一节点可能没有这样大的磁盘空间来存储或者单个节点处理 搜索请求,响应会太慢。

为了解决这个问题,Elasticsearch 提供了将索引划分成多片的能力,这些片叫做分片。当 你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善 并且独立的“索引”,这个“索引” 可以被放置到集群中的任何节点上。
分片之所以重要,主要有两方面的原因:

  1. 允许你水平分割/扩展你的内容容量
  2. 允许你在分片(位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/ 吞吐量

在一个网络/云的环境里,失败随时都可能发生。在某个分片/节点因为某些原因处于离线状 态或者消失的情况下,故障转移机制是非常有用且强烈推荐的。为此, Elasticsearch 允 许你创建分片的一份或多份拷贝,这些拷贝叫做复制分片,或者直接叫复制。

在分片/节点失败的情况下,复制提供了高可用性。复制分片不与原/主要分片置于 同一节点上是非常重要的。因为搜索可以在所有的复制上并行运行,复制可以扩展你 的搜索量/吞吐量

总之,每个索引可以被分成多个分片。一个索引也可以被复制 0 次(即没有复制) 或多次。一旦复制了,每个索引就有了主分片(作为复制源的分片)和复制分片(主 分片的拷贝)。

分片和复制的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时 候动态地改变复制的数量,但是你不能再改变分片的数量。

5.X 默认 5:1 5 个主分片,1 个复制分片

默认情况下,Elasticsearch 中的每个索引分配 5 个主分片和 1 个复制。这意味着,如果你 的集群中至少有两个节点,你的索引将会有 5 个主分片和另外 5 个复制分片(1 个完全拷 贝),这样每个索引总共就有 10 个分片。

posted @ 2019-10-15 22:42:56 浏览(77) 工具

avatar