初学ES——关于ES的疑问

1、倒排索引(Lucene索引)

Lucene索引是一个用于全文搜索的倒排索引(Inverted Index)库,它是Apache Lucene项目的核心组件。倒排索引是一种数据结构,它可以根据每个词汇在文档中的出现情况来构建索引。

Lucene索引由多个文档(Document)组成,每个文档都包含一个或多个字段(Field),每个字段都可以包含一个或多个词汇(Term)。当一个文档被加入到索引中时,Lucene会对该文档中的每个字段进行分词(Tokenization),并且生成一个包含词汇和其在文档中出现位置的倒排列表(Inverted List)。

通过这种方式,Lucene索引可以快速地查询出包含某个词汇的文档,并且可以按照相关性排序返回结果。此外,Lucene还支持各种查询类型,包括布尔查询、短语查询、模糊查询、范围查询等。

Lucene索引不仅可以用于文本搜索,还可以用于数值、日期等类型的数据搜索。它被广泛应用于搜索引擎、电子邮件、文档管理系统等领域,成为了搜索技术的基石之一。

在搜索引擎中,每个文档都要有一个文档id,文档内容相当就是一系列的关键词集合,文档就会经过分词,提取多个关键词,每个关键词就会都会记录他在文档中出现的次数以及文档出现的位置.

2、ElecticSearch的索引(索引)

在Elasticsearch中,索引(Index)是指一个具有特定名称的逻辑数据容器,它包含了一组具有共同属性的文档(Document)。索引是在Elasticsearch中组织和管理数据的主要方式之一,它类似于传统数据库中的表。

在Elasticsearch中,索引可以看作是一个逻辑上的分区,用于存储文档和相关的元数据。每个索引都有一个唯一的名称,可以包含多个分片(Shard)和副本(Replica),并且可以被配置为具有不同的分片数量和复制数量。

索引中的文档是具有相似结构的JSON对象,它们可以包含文本、数字、日期、地理位置和其他类型的数据。文档可以通过HTTP请求或者客户端API添加、更新或删除,也可以通过查询来检索和搜索。

每个文档都有一个唯一的ID,可以使用ID来检索或更新单个文档。此外,文档还可以包含自定义字段、元数据和其他相关信息,例如时间戳、标记和关联数据等。

索引还可以通过设置和映射(Mapping)来定义文档的结构和属性。映射是索引中存储的文档的元数据,它描述了文档中包含的字段和其对应的数据类型、分析器、索引选项和其他属性等。映射可以使用REST API或者客户端API进行管理和更新。

总之,索引是Elasticsearch中重要的组织和管理数据的方式,它为用户提供了灵活、可扩展和高效的搜索和分析功能。

3、 ElecticSearch的分片、ElecticSearch的索引、Lucene 索引

分片(Shard)

在 Elasticsearch 中,数据被分割成多个分片,每个分片都是一个独立的 Lucene 索引。每个分片都可以存储一部分文档数据,并独立地进行搜索和维护。分片可以被复制到其他节点上,以实现高可用性和负载均衡。Elasticsearch 默认情况下每个索引都有 5 个分片。

索引(Index)

索引是一种逻辑上的概念,用于表示一组具有共同特征的文档集合。在 Elasticsearch 中,索引可以包含多个分片,每个分片都存储部分文档数据。索引是 Elasticsearch 中最高层次的数据单元,它可以被搜索、修改和删除。

Lucene 索引

Lucene 索引是 Elasticsearch 中的基础,它是一个基于 Java 的全文搜索引擎库,提供了创建和维护倒排索引的功能。倒排索引是一种用于实现全文搜索的数据结构,它记录了每个单词在文档集合中出现的位置和频率。在 Elasticsearch 中,每个分片都包含一个 Lucene 索引,它们被用来进行搜索、聚合和排序操作。

假如我有5个分片,有10个文档那其中的ElecticSearch的分片、ElecticSearch的索引、Lucene 索引、每个分片中的文档数量是多少 是一定的吗

假如你有 5 个分片,有 10 个文档,那么其中的 Elasticsearch 的分片、Elasticsearch 的索引、Lucene 索引以及每个分片中的文档数量都不是一定的,而是由多个因素决定的。

分片数量

在创建索引时可以指定分片的数量,如果没有指定,默认是 5 个分片。因此,如果你指定了 5 个分片,那么每个分片中会有 2 个文档。如果你指定了 10 个分片,那么每个分片中会有 1 个文档。

文档 ID

Elasticsearch 在将文档分配到分片时,是根据文档的 ID 值进行哈希运算的,得到一个分片编号。因此,如果你的文档 ID 值分散较均匀,那么每个分片中的文档数量就会比较平均。如果文档 ID 值存在分布不均的情况,那么每个分片中的文档数量就会不均衡。

分片再平衡

Elasticsearch 会根据节点的加入或者离开,或者索引的修改等情况,对分片进行再平衡。在再平衡的过程中,文档可能会被重新分配到不同的分片中,导致每个分片中的文档数量发生变化。

文档大小

每个文档的大小也会影响每个分片中的文档数量。如果文档非常大,一个分片可能只能存储少量的文档;而如果文档非常小,一个分片可以存储更多的文档。

因此,可以看出,Elasticsearch 的分片、索引、Lucene 索引和每个分片中的文档数量都不是一定的,而是由多个因素决定的。当你创建索引时,应该根据实际情况进行设置,以便最大程度地发挥 Elasticsearch 的性能和可扩展性。

4、ES的 新的索引什么时候被创建

在ES中,当需要创建一个新的索引时,通常是在以下情况下:

应用程序需要存储新的数据集:例如,在应用程序中收集新的日志数据、社交媒体数据或其他类型的数据时,需要创建一个新的索引来存储这些数据。

现有索引已经达到了其容量极限:如果现有索引已经存储了大量的数据,而且查询性能已经开始下降,那么就需要创建一个新的索引来分散负载并提高查询性能。

对现有索引进行重构:如果现有索引的结构、设置或数据需要更改,那么就需要创建一个新的索引来反映这些更改。例如,可以通过创建新的索引来添加、删除或更改字段,或者更改分片的数量和分配策略等。

在ES中,可以使用RESTful API或者Java客户端来创建新的索引。创建新索引时,需要指定索引的名称、分片的数量和复制的数量等参数。可以通过修改索引设置和映射来自定义索引的配置和特性,以满足特定的需求。

值得注意的是,在ES中,索引被设计为可变的,因此可以随时向现有索引中添加、更新或删除文档,或者修改索引的配置和映射。这使得ES成为一个灵活、可扩展和易于维护的搜索引擎平台。

5、 ES怎么区分文档是否相同呢

在 Elasticsearch 中,每个文档都有一个唯一的文档 ID,该 ID 用于标识文档并将其存储在特定的分片中。如果文档具有相同的文档 ID,则它们被视为同一文档,无论它们的内容是否相同。

如果你希望确保文档的内容不重复,可以使用文档内容的摘要或散列值来进行比较。在 Elasticsearch 中,可以使用 Hash 函数生成文档内容的散列值,并将其存储在索引中。在搜索时,你可以使用相同的 Hash 函数计算查询的散列值,并与存储在索引中的散列值进行比较,从而确定文档内容是否匹配。

注意,由于哈希函数具有冲突的可能性,因此不能保证两个不同的文档具有不同的哈希值,尤其是在文档内容较小时,哈希冲突的可能性更高。因此,散列值仅用于比较文档的内容是否相同,而不能用于判断文档是否唯一。

6、ElacticSearch 中match 和term 的区别

在 Elasticsearch 中,"match" 和 "term" 是两种不同的查询方式,它们的区别在于匹配的方式和精度不同。

"match" 查询是一种全文检索查询,可以用于在指定字段中查找与查询条件匹配的文档。"match" 查询会将查询字符串分词后进行匹配,而不是按照整个查询字符串进行精确匹配。例如,如果你想要查找 "title" 字段中包含 "Elasticsearch is a search engine" 这句话的所有文档,可以使用的 "match" 查询:

```

{

  "query": {

    "match": {

      "title": "Elasticsearch is a search engine"

    }

  }

}

```

在这个例子中,"match" 查询会将查询字符串 "Elasticsearch is a search engine" 分词成五个词项 "Elasticsearch"、"is"、"a" 和 "search"、"engine",然后在 "title" 字段中查找同时包含这五个词项的文档。

"term" 查询是一种精确匹配查询,它会完全匹配查询条件的单个词项。例如,如果你想要查找 "title" 字段中值为 "Elasticsearch" 的所有文档,可以使用的 "term" 查询

```

{

  "query": {

    "term": {

      "title": "Elasticsearch"

    }

  }

}

```

在这个例子中,"term" 查询会精确匹配 "title" 字段中值为 "Elasticsearch" 的文档,而不会对查询字符串进行分词。

总的来说,"match" 查询和 "term" 查询都是 Elasticsearch 中常用的查询方式,它们可以用于不同的场景,具有不同的匹配方式和精度。"match" 查询主要用于全文检索场景,可以匹配包含查询条件的文档,而 "term" 查询则主要用于精确匹配某个字段的值,对查询条件不进行分词。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容

  • 1 前言 1 大规模数据如何检索 当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度...
    MiniSoulBigBang阅读 1,302评论 0 5
  • 本文集主要是总结自己在项目中使用ES 的经验教训,包括各种实战和调优。 Elasticsearch是使用Java编...
    不怕天黑_0819阅读 1,604评论 0 1
  • 为什么要用ES集群? Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接...
    hellokitty小丸子阅读 16,944评论 0 8
  • 核心概念 image.png Node - 节点 即节点。节点是组成Elasticsearch集群的基本服务单元,...
    河神阅读 790评论 0 0
  • 1. ==es调优== 1.1、设计阶段调优(1)根据业务增量需求,采取基于日期模板创建索引,通过 roll ov...
    Tim在路上阅读 481评论 0 6