要有效地使用Elasticsearch,必须了解索引和文档等关键概念。在此博客文章中,我们将在Elasticsearch的背景下探讨哪些索引和文档。
什么是索引?
想象一个孩子的房间里有一个装满玩具的抽屉。在Elasticsearch中,索引具有类似的目的,它是相关数据的存储库。将其视为一系列文档集合,这些文档被分组在一起以方便搜索和检索。
要可视化这一点,让我们考虑电影索引的简单表示:
movies
├─ Document 1
├─ Document 2
├─ Document 3
├─ ...
索引中的每个数据都称为文档。
您可以使用Sigmie这样创建索引:
$index = $sigmie->newIndex('movies')->create();
什么是文档?
文档只是存储在索引中的JSON。
Document = JSON
在Elasticsearch中,A 文档表示为JSON对象,并存储在索引中。它包含您要搜索,分析或检索的实际数据。
以下是文档的外观:
{
"title": "The Shawshank Redemption"
}
该文档包含一个带有值The Shawshank Redemption
的单个字段title
。
JSON结构使我们能够代表各种数据类型和结构。文档结构是使用Elasticsearch实现您想要的最重要部分。
在这里,您如何在Sigmie中创建Elasticsearch文档的实例:
use Sigmie\Document\Document;
$document = new Document(['name' => 'The Shawshank Redemption']),
什么是索引
索引是将文档添加到索引中的简单行为。这与使用ElasticSearch的使用无关,索引很重要,这仅仅是因为您可以在索引中执行任何操作。
这是用Sigmie:
索引a 文档的方法
$index->collect()->add($document);
一个例子
这是一个示例,演示了如何在我们的“电影”索引中添加三个电影文档:
$documents = [
new Document(['title' => 'The Shawshank Redemption']),
new Document(['title' => 'Inception']),
new Document(['title' => 'Pulp Fiction']),
];
$index->collect()->merge($documents);
在上面的代码中,我们创建了一个代表电影的Document
对象。通过在收集的索引上调用merge
方法并通过文档,我们将其添加到索引
这是我们合并文档后的索引。
movies
├─ "The Shawshank Redemption"
├─ "Inception"
├─ "Pulp Fiction"