elasticsearch 如何使用elasticsearch类型?,elasticsearch,elasticsearch" /> elasticsearch 如何使用elasticsearch类型?,elasticsearch,elasticsearch" />

elasticsearch 如何使用elasticsearch类型?

elasticsearch 如何使用elasticsearch类型?,elasticsearch,elasticsearch,注:如果你能通过评论告诉我为什么你认为这是一个狗屎问题,我将不胜感激。请不要只是否决投票,而不告诉我原因 我们知道索引下有一个叫做类型的概念。但我不知道我们为什么需要它 首先我认为我们用它来组织数据。我们有如下索引: curl -XPOST 'localhost:9200/customer/USA/_bulk?pretty' -d ' {"index":{"_id":"1"}} {"name": "John Doe" } {"index":{"_id":"2"}} {"name": "Jane

注:如果你能通过评论告诉我为什么你认为这是一个狗屎问题,我将不胜感激。请不要只是否决投票,而不告诉我原因

我们知道索引下有一个叫做类型的概念。但我不知道我们为什么需要它

首先我认为我们用它来组织数据。我们有如下索引:

curl -XPOST 'localhost:9200/customer/USA/_bulk?pretty' -d '
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
'
但在上述情况下,我们总是可以消除该类型,将其移动到json主体,如:

curl -XPOST 'localhost:9200/customer/_bulk?pretty' -d '
{"index":{"_id":"1"}}
{"name": "John Doe","country":"USA" }
{"index":{"_id":"2"}}
{"name": "Jane Doe","country":"USA" }
'
通过这种方式,我们总是可以添加一个字段来替换类型

然后我想这可能与性能有关。我想如果你把数据分成不同的类型,那么每种类型下的数据就更少了。因此,查询每种类型的性能应该更好。但事实并非如此

elasticsearch索引的性能与碎片有关。因此,即使您将数据拆分为不同的类型,它仍然存储在相同的碎片集下


那么为什么我们需要类型呢?

首先,尽管弹性搜索在运行时确定字段的类型,但一旦它为字段指定了特定类型,它总是希望该字段具有相同类型的值。因此,如果需要存储不同类型的数据,则需要多种类型。其次,它允许在单个索引中存储具有差异映射的多个类型。此外,如果您确定某个特定类型的模式,它还可以使您更轻松地查询该类型。

根据我对ES的理解,类型可以与关系数据库中的表概念联系起来。其中一个数据库可以说是一组相关的表。同样,在ES中,索引是一组相关类型,索引中的每种类型都包含共享某些公共属性或字段的文档

在您的示例中,对于“客户”索引,我们可以有来自不同国家(如美国、印度、英国等)的不同员工。每个国家的客户记录可以按不同类型进行分组,以便进行组织。当我们为特定国家/地区的客户运行搜索查询时,我们只需要在USA类型上运行该查询。我们不需要在整个索引中查找以获得来自美国的客户数据

另一个例子:假设您运行一个博客平台,并将所有数据存储在一个索引中。在此索引中,您可以为用户数据定义一种类型,为博客数据定义另一种类型,为评论数据定义另一种类型。因此,我们在逻辑上将数据组织为不同的类型,并在执行搜索时查找所需的类型

因此,一般来说,类型是索引的逻辑类别/分区,其语义完全取决于您。它可以定义为具有一组公共字段的文档

为了更好地理解,你可以参考这篇文章