10

抱歉,我是 ElasticSearch 的新手。

http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping.html

该文档说您可以“在 twitter 索引中创建一个名为 tweet 的映射”

$ curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d '
{
    "tweet" : {
        "properties" : {
            "message" : {"type" : "string", "store" : "yes"}
        }
    }
}
'

正如有人在 ES IRC 频道上告诉我的那样,/twitter/tweet twitter=index, tweet=type

但是,如果我执行以下操作会发生什么?

$ curl -XPUT 'http://localhost:9200/twitter/XXX/_mapping' -d '
{
    "YYY" : {
        "properties" : {
            "message" : {"type" : "string", "store" : "yes"}
        }
    }
}
'

如果我已经在 url 中提供了类型名称,为什么还要在内容中提供类型名称?如果我在内容中提供类型名称,为什么我不能只调用一些 url,例如:

$ curl -XPUT 'http://localhost:9200/twitter/_mapping' -d '

在阅读文档时,对我来说,它说“在 twitter 索引中创建一个名为 tweet 的映射”,这意味着 XXX 是映射名称,YYY 是类型名称。

因此,如果有一个映射名称,一个索引通常可以有很多“映射”

那么,到底 XXX 和 YYY 是/应该是一样的吗?


这不是我从文档中理解的内容,而是我认为: - 一个索引可以有类型 - 类型有一个映射因此我们不会像文档说的那样创建映射,但是我们创建了一个类型,它有一个映射,或者我们更新类型的映射没有?

在我不想使用任何类型的索引上(所有被索引的文档都是相同类型的数据),但我想为该索引创建一个映射,我应该通过只创建一个类型来处理它吗?映射,并始终使用该类型(例如在 CouchDB 河中)?

谢谢

4

1 回答 1

11

在当前版本的 elasticsearch search (0.19.4) 中,“YYY”被忽略,映射被分配给“XXX”类型。

实际上,您可以将创建映射视为创建类型。在内部,类型是根据映射表示的,文档只是反映了这种行为。如果所有记录都具有相同的类型,则应将索引视为只有一种类型的索引。类型用于“命名空间”不同类型的记录,因此它是强制性的。id 本身并不能唯一标识一条记录。要在elasticsearch中识别一条记录,你需要有index、type和id。例如,这就是为什么 type 是 get 操作的必需参数的原因。对于其他操作,如果没有指定类型,elasticsearch 假定您要对所有类型的记录执行操作。

请注意,也可以通过添加新类型的记录随时动态创建类型。因此,只有一种类型的索引是还没有第二种类型的索引

于 2012-06-05T17:07:55.833 回答