Elastic Search,MongoDB:Mongo连接器自定义映射和设置



我已经用ElasticSearch和MongoDB实现了mongo连接器。当一个文档被添加到MongoDb时,它会自动添加到带有自动映射的ES中,这一点很好。我的问题是,如果我想向索引添加分析器、过滤器和自定义映射,该怎么办。例如n-gram、小写过滤器、术语向量。ElasticSearch不允许更新映射和设置,那么我该怎么做呢?

我已经找到了问题的解决方案。在我的场景中,在开始将文档添加到MongoDb之前,必须设置Elasticsearch的映射和设置。通过这种方式,您将能够使用mongo连接器进行自定义分析器,例如ngram分析器。一旦你将文档添加到MongoDb,它将在ES中与它的映射和设置同步。

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

我确实听说过另一种解决方案,可以在Elasticsearch中使用模板,让数据继承基于唯一标准的设置。您可以在此处阅读更多信息:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

希望这能有所帮助!

最新更新