elasticsearch,Lucene,Nosql,elasticsearch" /> elasticsearch,Lucene,Nosql,elasticsearch" />

Lucene 弹性搜索映射&;相关对象

Lucene 弹性搜索映射&;相关对象,lucene,nosql,elasticsearch,Lucene,Nosql,elasticsearch,请原谅这个问题的潜在N00B性——我仍在试图了解这个非关系型NoSQL的东西 ElasicSearch的性能和简单性给我留下了深刻的印象,但在深入研究实现之前,我有一个映射(临界NoSQL理论)问题要回答 让我们继续使用ElasticSearch文档中的Twitter示例 基本上,我们知道一条推文属于一个用户,而一个用户有很多推文。 这些对象看起来像这样: user = {'screen_name':'d2kagw', 'id_str':'1234567890', 'favourites_co

请原谅这个问题的潜在N00B性——我仍在试图了解这个非关系型NoSQL的东西

ElasicSearch的性能和简单性给我留下了深刻的印象,但在深入研究实现之前,我有一个映射(临界NoSQL理论)问题要回答

让我们继续使用ElasticSearch文档中的Twitter示例

基本上,我们知道一条推文属于一个用户,而一个用户有很多推文。 这些对象看起来像这样:

user  = {'screen_name':'d2kagw', 'id_str':'1234567890', 'favourites_count':'15', ...}
tweet = {'message':'lorem lipsum...', 'user_id_str':'1234567890', ...}
我想知道的是,tweet对象是否可以引用user对象? 因为我希望能够编写如下查询:

{'query': {
  'term':{'message':'lipsum'},
  'range':{'user.favourites_count':{'from':10, 'to':30'}}
}}
作为响应的一部分,我希望返回与用户对象匹配的tweet(而不是稍后延迟加载它们)

我是不是要求太多了

如果我想以这种方式查询数据,我应该将所有用户数据都扔到tweet对象中吗

在我的实现中(不使用twitter,这只是一个优雅的示例),由于查询数据的方式不同,我需要将两个数据集作为不同的索引,因此我不确定是否可以使用对象类型和所需的索引结构


提前感谢您的帮助。

ElasticSearch并不真正支持我们在SQL世界中已经习以为常的表联接。最接近它的是,允许根据记录在另一个表中的比例限制一个表中的结果,即使在这里,也限制为1对多(父-子)关系


因此,在这个世界上,一种常见的方法是对所有内容进行反规范化,并一次查询一个索引。

看来反规范化将是我们这里最有可能的结果。d2kagw:你最终做了什么?关于如何存储帐户数据和tweet,我有完全相同的问题。