弹性搜索,MongoDB:Mongo-Connector自定义映射和设置

时间:2015-12-09 18:53:06

标签: mongodb indexing elasticsearch mapping settings

我已经使用ElasticSearch和MongoDB实现了mongo-connecter。它适用于将文档添加到MongoDb的情况,它会自动添加到ES并自动映射。我的问题是,如果我想为索引添加分析器,过滤器和自定义映射,该怎么办?例如n-gram,小写过滤器,term-vectors。 ElasticSearch不允许更新映射和设置,那么我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

我已经找到了问题的解决方案。在我的场景中,必须先设置Elasticsearch的映射和设置,然后才能开始将文档添加到MongoDb中。这样您就可以使用mongo连接器进行自定义分析仪,例如ngram分析仪。将文档添加到MongoDb后,它将在ES中与其映射和设置同步。

为了给你一个更详细的答案,我将提供一个具体的例子。在您将一个API连接到MongoDb作为主数据源但想要为其快速搜索功能添加ElasticSearch的情况下,您可以使用Mongo-Connecter来保持MongoDb和ElasticSearch同步。但是如果我想添加自定义设置和映射呢?好吧,我相信你知道你不能编辑/更新已经设置的索引。您必须关闭索引,进行更改并重新索引数据以获取这些更新。我对这个问题的解决方案是让api有一个设置和映射文件。在这里,我添加了诸如过滤器和ngrams和映射之类的设置,以匹配将存储在MongoDb中的数据的格式。在启动时,api调用ElasticSearch从我们的映射和设置创建一个空索引。然后,api可以将数据发布到MongoDb中,因为已知Elasticsearch中的索引已经创建。这里的要点是,在开始向MongoDb输入数据之前,需要在Elasticsearch中启动并设置索引。

我听说过另一种解决方案,您可以在Elasticsearch中使用模板让数据根据唯一标准继承设置。您可以在此处详细了解:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

希望这有帮助!