NoSQL用于搜索任意属性值而不预先指定索引

时间:2013-03-30 18:25:47

标签: nosql

我花了很多时间研究NoSQL系统做一些听起来应该很常见的事情。我想存储JSON数据(或我猜的任何结构化文档),然后搜索任何标记/值对。

挑战在于我不提前知道将包含在数据中的顶级属性,所以我真的希望避免必须提前定义每个可能的索引。

例如,我可能有很多联系人,例如

名字:鲍勃 姓氏:史密斯 地址: ... 城市:昆西

某些数据集将具有其他特定于解决方案的属性,例如:

推特:@blah 性别:男性

虽然其他人可能有:

companyname:一个工作的好地方 公司城市:波士顿 年就业人数:7

我希望能够搜索companycity = Boston AND city = Quincy获取一个数据集,city = Boston AND gender = male,而无需最初定义这些索引。

所以,尽管有一个相当人为的例子,对于这种类型的任意搜索,最好的nosql系统是什么?目前我所知道的是使用全文索引解决方案,如Lucene。除非我遗漏了一些东西,否则Cassandra,MongoDB,CouchDB都需要提前编写索引才能获得真正的性能。

一点额外信息:

每个数据集可能是100000条记录。搜索是互动的。

任何帮助和链接表示赞赏。如果您有实际解决方案的经验,这将是非常好的。

1 个答案:

答案 0 :(得分:0)

ElasticSearch提供了我的问题的关键要求(感谢@ ryan1234的提示)。它通过简单的HTTP API为快速索引和查询数据提供支持。

  • 自动编入索引的JSON文档
  • 任意结构化文档架构
  • 在运行时定义的搜索
  • 没有必要提前生成索引或查询定义
  • 可扩展性(我目前在2GB内存实例中有大约1000万个文档)

基于几个月在几个项目中使用ElasticSearch的经验,我绝对是一个倡导者。