繁体   English   中英

ElasticSearch中映射和类型之间的混淆

[英]Confusion between mappings and types in ElasticSearch

对不起,我是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:

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

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

因此,如果存在映射名称,则索引通常可以存在许多“映射”

那么,最终,XXX和YYY是/应该是一样的?


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

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

谢谢

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

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

注意,也可以通过添加新类型的记录随时动态创建类型。 所以,只有一个类型的指数是不具备第二类一个指标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM