elasticsearch,Database,elasticsearch" /> elasticsearch,Database,elasticsearch" />

Database 将ID存储在ElasticSearch索引的_type字段中是一个好主意吗?

Database 将ID存储在ElasticSearch索引的_type字段中是一个好主意吗?,database,elasticsearch,Database,elasticsearch,我刚开始一个家庭项目,我计划使用elastic作为数据库。我目前正处于设计阶段,并开始考虑这一点 假设我有属于不同人群的文章。Person对象具有ID,而Article对象也具有ID属性。 显然会有一个索引来保存文章文档。使用这些文档的_type字段来存储表示文章所属的人的ID似乎是个好主意。 然而,我从未见过有人用这个字段来做这样的事情 在元数据中搜索是否比在源数据中搜索更快?我的意思是,如果我不使用_类型来存储ID,则Article对象将具有OwnerID字段或类似的内容 举个实际的例子,假

我刚开始一个家庭项目,我计划使用elastic作为数据库。我目前正处于设计阶段,并开始考虑这一点

假设我有属于不同人群的文章。
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"}} 
              ]
           }
         }
      }
   }
}