elasticsearch系列(一) 术语

elasticsearch(以下简称es)是一款开源的搜索引擎,基于apach lucene。最近在做nlp的时候顺便研究一下。

下面是官方列举的术语解释

Near Realtime

接近实时的查询,通常情况下,延迟在1s以内

Cluster

一个集群由1个或者多个节点组成,这些节点提供整个数据和索引,性能来源于每个节点。一个集群有一个唯一的名字,默认为“elasticsearch”,

Node

一个node启动的时候分配一个唯一的id(UUID),自动会加入名为“elasticsearch”的cluster,前提是网络没有问题,一个node只能加入一个集群。

Index

一个index是一些有相似特征的documents集合,比如有一个顾客类的index,一个生产类的index,有一个订单类的index。index必须都是小写的

Type

一个index可以定义出多个type,一个type是一个逻辑的类别或者分区,并且其语义完全取决于自己,一般而言一个type定义了包含多个fields的documents。

Document

一个document是可以被索引信息的基础单元,尽管一个document在物理上是属于index的,但事实上,一个document必须被索引或者分配到一个index里的type。

Shard&Replicas

一个index可以存储大量的数据,并且超过单节点的限制。例如,单个index可能含有几十亿个documents,占据了1TB的磁盘空间,这就可能导致单个node可能没有这么大的空间,或者在查询的时候会很慢。

为了解决这个问题,es给出了shard的概念,将一个index拆分成多个部分。创建的index就可以申明shard的数量,每个shard都是拥有完整和独立的index。

Sharding的两个重要点:

1.shard允许你对大量数据做横向切分

2.shard允许通过多个shards分布式并发的操作,从而提升性能和吞吐量

Shard是如何分布的以及多个它们的documents是如何被合并都由es管理,这些对使用者都是透明的。

关于容错,es通过replica来解决,replica是index下的shard的副本。

Replicaing的两个重要点:

1.提供了HA。需要提醒的是,replica和shard不应该在同一个node

2.搜索可以在所有的replica并发处理

你可以在创建的时候设置index的shard和replica数量,但是之后,你只能更改replica的数量,而不能更改shard的数量.

Es的默认配置为,5个shards和1个replica,如果你的cluster有两个及以上的node,则一共有10个shards(5 primary shards,5 replica shards)

其他

Es的一个shard就是lucene的index

总结

逻辑上,index、type、documents作为namespace的存在,可以充分表现Restful风格的接口

物理上,index可以看做是数据库中的库,通过shard(类似partition)做HA和高并发

参考资料

//es官方介绍

https://www.elastic.co/guide/en/elasticsearch/reference/5.2/_basic_concepts.html

时间: 2024-08-07 16:37:42

elasticsearch系列(一) 术语的相关文章

elasticsearch系列(五)score

概述 score在ES中有着很重要的作用,有了它才有了rank,是验证文档相关性的关键数据,score越大代表匹配到的文档相关性越大 官方解释 查询的时候可以用explain来展示score的计算过程,也可以增加format=yaml来讲json转成yaml方便阅读 类似xxx/_search?explain&format=yaml 下图是通过explain看到的一部分json,其实这个解释中就展示出了计算公式,不得不说ES在这点上还是很人性化的 计算方式 常说的相关性是指计算一个全文(full

elasticsearch系列(四)部署

linux环境 centOS6.8 本文采用tar包的方式部署es 准备jdk8的环境 5.4.0的es依赖jdk8及以上版本 下载linux版的jdk jdk-8u121-linux-x64.tar.gz tar -zvxf jdk-8u121-linux-x64.tar.gz //修改环境变量 vim /etc/profile //添加如下 JAVA_HOME=/usr/java/jdk1.8.0_121 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME

elasticsearch系列(七)java定义score

概述 ES支持groovy 和 java两种语言自定义score的计算方法,groovy甚至可以嵌套在请求的参数中,有点厉害,不过不在本篇讨论范围. 如何用自定义的java代码来定义score如何产生,这用到了ES的插件功能 关于es插件的相关操作,可以通过以下命令获得 ./bin elasticsearch-plugn –h 操作步骤 1.增加配置 首先需要在ES的配置中增加以下, 旧版本是 script.disable_dynamic: false 目前用的ES是5.2.2,根据日志提示,改

elasticsearch系列(六)备份

快照备份 1.创建文件仓库 1.1 在$ELASTICSEARCH_HOME/config/elasticsearch.yaml中增加配置 #这个路径elasticsearch必须有权限访问,这个路径是所有快照仓库的根路径 path.repo: your_path 1.2 调用rest api // nlp_defect是你仓库的名称 put url/_snapshot/nlp_defect { "type": "fs", "settings":

搜索引擎ElasticSearch系列(四): ElasticSearch2.4.4 sql插件安装

一:ElasticSearch sql插件简介 With this plugin you can query elasticsearch using familiar SQL syntax. You can also use ES functions in SQL. 二:sql插件安装 地址:https://github.com/NLPchina/elasticsearch-sql/ 找到对应的2.4.4版本,如下图: 启动es服务,运行cmd命令切换到bin目录,接着输入以下命令:plugin

ElasticSearch 系列随笔

1.ElasticSearch 常用设置 2.ElasticSearch 从2.2升级到6.2.4后在Kibana注意问题 (Validation Failed: 1: an id must be provided if version type or value are set;) 3.ElasticSearch 因为磁盘空间不够引起的数据插入错误.(message [ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only

elasticsearch系列一:elasticsearch(ES简介、安装&配置、集成Ikanalyzer)

一.ES简介 1. ES是什么? Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上 用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API. Elasticsearch 不仅仅只是一个全文搜索引擎. 它可以被下面这样准确的形容: 一个分布式的实时文档存储,每个字段可以被索引与搜索--作数据库用 一个分布式实

elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)

一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状态值说明 Green - everything is good (cluster is fully functional),即最佳状态Yellow - all data is available but some replicas are not yet allocated (cluster i

elasticsearch系列三:索引详解(分词器、文档管理、路由详解)

一.分词器 1. 认识分词器  1.1 Analyzer   分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如处理文本中的html标签字符.处理完后再交给tokenizer进行分词.一个analyzer中可包含0个或多个字符过滤器,多个按配置顺序依次进行处理. tokenizer:分词器,对文本进行分词.一个analyzer必需且只可包含一个tokenizer. token filter:词项过滤器,对to