我正在考虑使用ElasticSearch作为大型对象的搜索引擎。在一台机器上大约有5亿个物体。对于执行高级查询,far is Elasticsearch是一个很好的解决方案。但有一个问题是,我确实找到了在文档字段上创建二级索引的技术。在elasticsearch中,是否有可能像在列上的MySQL中那样创建第二个indecies?或者,是否实现了其他技术来加速对字段值的搜索?我使用的是单个服务器环境,每个行/对象必须存储大约300个字段。目前,我的数据库中大约有5亿个对象。
在进阶时谢谢!
发布于 2013-06-18 20:18:08
我提前向你道歉,我不明白你的问题。Elasticsearch本身就是一种基于索引的技术(它建立在Lucene之上,Lucene是一种基于索引的搜索构建)。您将文档放入Elasticsearch中,这些文档上的各个字段都被编入索引并可搜索。您不必担心创建二级索引;字段将在默认情况下(在大多数情况下)被索引。
Elasticsearch和Solr之间的一个不同之处在于,在Solr中,您必须指定一个模式来定义文档上的字段,以及该字段是否将被索引(可用于搜索)、存储(作为搜索结果可用)或两者。Elasticsearch不需要预先的模式,而不是字段的特定映射,然后使用合理的默认值。我相信核心字段(string、number、etc..._)在默认情况下是有索引的,这意味着可以对它们进行搜索。
现在,在您的示例中,您有一个文档,其中包含许多字段。您可能需要对映射进行一些调整,以便只索引您知道可能要搜索的字段。如果索引过多,索引本身的大小就会膨胀,而且速度不会像只包含已知要搜索的字段的索引那样快。此外,Lucene将部分索引加载到内存中,以真正实现快速搜索。使用臃肿的索引,您将无法在内存中保留那么多内容,因此您的搜索将受到影响。您应该查看Mappings API和Core Types部分,了解有关如何做到这一点的更多信息。
https://stackoverflow.com/questions/17167779
复制相似问题