Database 将ID存储在ElasticSearch索引的_type字段中是一个好主意吗?
我刚开始一个家庭项目,我计划使用elastic作为数据库。我目前正处于设计阶段,并开始考虑这一点 假设我有属于不同人群的文章。Database 将ID存储在ElasticSearch索引的_type字段中是一个好主意吗?,database,
elasticsearch,Database,
elasticsearch,我刚开始一个家庭项目,我计划使用elastic作为数据库。我目前正处于设计阶段,并开始考虑这一点 假设我有属于不同人群的文章。Person对象具有ID,而Article对象也具有ID属性。 显然会有一个索引来保存文章文档。使用这些文档的_type字段来存储表示文章所属的人的ID似乎是个好主意。 然而,我从未见过有人用这个字段来做这样的事情 在元数据中搜索是否比在源数据中搜索更快?我的意思是,如果我不使用_类型来存储ID,则Article对象将具有OwnerID字段或类似的内容 举个实际的例子,假
Person
对象具有ID,而Article
对象也具有ID属性。
显然会有一个索引来保存文章文档。使用这些文档的_type字段来存储表示文章所属的人的ID似乎是个好主意。
然而,我从未见过有人用这个字段来做这样的事情
在元数据中搜索是否比在源数据中搜索更快?我的意思是,如果我不使用_类型来存储ID,则Article对象将具有OwnerID字段或类似的内容
举个实际的例子,假设我想查找XY以任意顺序撰写的所有关于政治的文章
第一个版本(注意XY在标题中):
第二版:
GET /my_index/article/_search
{
"query" : {
"constant_score" : {
"filter" : {
"bool" : {
"must" : [
{ "term" : {"ownerID" : XY}},
{ "term" : {"genre" : "politics"}}
]
}
}
}
}
}
其中有一个比另一个好吗?
我很乐观,我想做一个好的设计,即使5个人要使用这个网站,即使5000人。
如果一个索引中有5000种不同的类型,这有关系吗?是的,这很重要,这就是为什么第二个版本是可行的 如果您决定使用person ID作为文章的类型,并且您有5000人,那么您的
my_index
索引中最终将包含5000个映射类型,所有映射类型都具有相同的字段。如果您想在文章中添加一个新字段,则必须修改所有5000种映射类型。这可能就是你从未见过有人使用这种类型的原因
在第二个版本中,为文章设置一个索引和一个映射类型,然后设置一个
ownerID
字段,这要简单得多。是的,这很重要,这就是为什么第二个版本是可行的
如果您决定使用person ID作为文章的类型,并且您有5000人,那么您的my_index
索引中最终将包含5000个映射类型,所有映射类型都具有相同的字段。如果您想在文章中添加一个新字段,则必须修改所有5000种映射类型。这可能就是你从未见过有人使用这种类型的原因
在第二个版本中,为文章提供一个索引和一个映射类型,然后提供一个
ownerID
字段,这要简单得多。很高兴它有所帮助!很高兴它有帮助!
GET /my_index/article/_search
{
"query" : {
"constant_score" : {
"filter" : {
"bool" : {
"must" : [
{ "term" : {"ownerID" : XY}},
{ "term" : {"genre" : "politics"}}
]
}
}
}
}
}