【问题标题】:Elasticsearch River(mongodb), modeling schemaElasticsearch River(mongodb),建模模式
【发布时间】:2014-04-30 08:13:19
【问题描述】:

简介

我目前正在为一家公司开发一个项目,到目前为止一切顺利。我们正在生产中。我们的 QA 最近发现了 ElasticSearch 的一些奇怪行为。我们将 ElasticSearch 与 MongoDB 一起使用。 ElasticSearch 通过 River 填充,特别是 MongoDB River Plugin For Elastic Search

背景

我们通过我们的服务汇总、过滤和分类超过 200 万个职位。为了快速有效地搜索这些数据,我们使用 Elastic Search,MongoDB 是我们的主要数据存储。主要搜索功能之一是按地区、州和城市进行搜索。我们使用州缩写来执行此操作,例如。 Madison, WI。有了这个功能,我们可以搜索整个地区(例如midwest)并得出中西部所有地区的结果,我们可以对各州执行相同的操作并得出该州城市的所有结果。

问题

我们遇到了一个奇怪的问题,即俄勒冈州的搜索结果没有命中,或者命中包括俄勒冈州内的城市,而只是全州范围内的工作(不特定于任何城市)。

原因

最突出的原因似乎是Apache Lucene 保留了OR 这个词作为or 操作,这也是Oregon 的缩写。这就是我认为的问题所在,因为这种奇怪的行为仅在俄勒冈州的搜索中显示。

解决方案?

我有目的的解决方案是将“状态”字段更改为 not_analyzed 以防止这种情况发生,并更改我的搜索查询。

为什么我不能让它工作

MongoDB River 是相对交钥匙的,我可以将它指向一个数据库,甚至可以将它细化为一个集合。它将形成自己的到我的集合的映射,问题是没有文档或提及我将如何为存储在 MongoDB 中并使用 River 索引到 ES 的数据定义我自己的映射。

结论

有人知道在预定义映射中更改字段的方法吗?否则,有谁知道我如何为 MongoDB River 定义自己的映射?文档或示例会很棒。这是一个令人困惑的问题,所以如果您需要更多详细信息,请随时询问。

【问题讨论】:

    标签: mongodb elasticsearch


    【解决方案1】:

    我相信您需要先创建索引并定义映射,然后再创建河流。您可能会发现之前的讨论很有帮助:

    mapping in create index in elasticsearch through mongodb river is not taking effect

    还有这个:

    http://elasticsearch-users.115913.n3.nabble.com/Add-settings-and-mapping-when-create-new-river-mongodb-td4039081.html

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 2012-02-26
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多