2

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

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

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

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

一些数据集将具有额外的解决方案特定属性,例如:

推特:@blah 性别:男

而其他人可能有:

公司名称:工作的好地方公司城市:波士顿工作年限:7

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

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

一些额外的信息:

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

任何帮助和链接表示赞赏。如果您有实际解决方案的经验,这样做会很棒。

4

1 回答 1

1

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

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

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

于 2014-01-21T17:35:25.177 回答