我想知道如何执行索引文档的命令(Put / index / type /id{data}),以及文档是如何在物理层存储的。
发布于 2018-01-07 10:02:22
我试图为您简要总结Elasticsearch的重要部分,但我绝对建议您阅读权威指南。
简介
倒排指数:
本质上,Elasticsearch是基于一种名为Lucene的技术设计的(该技术是在1998年作为Apache项目的一部分发布的)。Lucene被设计为从插入到系统中的文档创建反向索引。Elasticsearch后来开始发挥作用,使该系统得以分发。老实说,这就是弹性搜索的力量来源。
为了理解Elasticsearch,首先需要了解Elasticsearch中的索引。索引基本上意味着从给定的文档创建一个倒排的索引。请阅读以下链接以理解倒排索引。
链接:倒置指数
分布式执行请求:
Elasticsearch是一种分布式技术,它使多个不同的节点在同一网络中具有弹性运行成为可能。所有创建的节点一起组成一个集群。
如果在特定索引上运行GET命令,将得到模式信息如下所示:
{
"mappings": { --> mappings component of the index defines the structure of what fields contain what kind of data
...
},
"settings": { --> defines configuration settings for an index
...
}
}如果详细查看“设置”部分,您可能会发现以下内容非常类似:
"settings": {
"index": {
"creation_date": "1504387536767",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "bfVuaeZtTYyWffcqKHOP_w",
"version": {
"created": "5050199"
},
"provided_name": "noname"
}
}number_of_shards:这定义了索引的物理表示形式。碎片主要用于将索引文档分成不同的块。
number_of_replicas:这定义了备份碎片的数量。
现在让我们来看看下面的模式
cluster
|-------------------------------------------------------------------------------------------------------|
| node1 node2 |
| |---------------| |---------------| |
| | P0 | | P1 | --> P0 is in node1 and its replica(R0) is in node2 |
| | R1 | | R0 | P1 is in node2 and its replica(R1) is in node1 |
| | | | | |
| | | | | |
| |---------------| |---------------| |
|-------------------------------------------------------------------------------------------------------|P表示主碎片
R表示副本碎片
在本例中,如果任何节点下降,我们仍然可以到达所有数据,因为node1有P0和R1,node2有P1和R0。此设置还有利于数据读取请求的负载平衡。
这只是一个非常简单的例子,让您了解Elasticsearch如何在不深入了解细节的情况下使事情变得更快。
文本分析:
当我们向Elasticsearch发送文档时,文档会经过一个分析过程。这个过程是一个创建倒排索引表示的过程,如果有,则应用过滤器(例如停止字删除、低胁迫、词干和同义词)。
如果我们索引两个文档,如下面的示例所示,弹性最终将创建lucene索引表,如下所示
示例:
doc1 =我认为弹性是下一件大事
doc2 =下一个大数据
一旦分析器处理了这两个文档,它将创建倒排索引,如下所示
|---------|------------|-----------|
| Token | Exits in 1 | Exits in 2|
|---------|------------|-----------|
|I | X | |
|think | X | |
|elastic | X | |
|is | X | X |
|the | X | |
|next | X | X |
|big | X | X |
|thing | X | X |
|in | X | X |
|data | | X |
|---------|------------|-----------|在为文档创建倒排索引之后,我们可以搜索一个单词。如果我们搜索“弹性”这个词,它会返回这两个文档。如果搜索“数据”一词,它将返回第二个文档。
额外:
RDBMS到弹性搜索
如果您熟悉关系数据库,下面的图表还可以帮助您理解哪些部分与Elasticsearch中的信息匹配
|Elasticsearch|Relational DB|
|Field |Column |
|Document |Row |
|Type |Table |
|Index |Database |“索引”一词的两个不同含义
还值得一提的是,在Elasticsearch中,"index“一词可以互换使用。我们在Elasticsearch中对两种不同的东西使用"index“这个词。
第一个是指弹性DB的时间。弹性数据库称为索引(如动物索引)。数据库中有类型(在本例中,我们可以有两栖动物、爬行动物和哺乳动物)。在类型中,我们有文档,在文档中,我们有字段。
第二个是我们将文档插入索引的时间。这被称为“索引文档”。例如,下面的PUT请求触发弹性来索引给定的文档。
PUT /animals/birds/parrot
{
"info": "Parrots, also known as psittacines",
"lifespan": 50,
"avglength": 3.4,
}https://stackoverflow.com/questions/48134850
复制相似问题