我目前正在为一家公司开展一个项目,到目前为止一直很好。我们正在生产中。我们已经看到了我们的QA最近发现的ElasticSearch的一些奇怪行为。我们正在使用ElasticSearch和MongoDB。 ElasticSearch通过River填充,特别是MongoDB River Plugin For Elastic Search。
我们通过我们的服务汇总,过滤和排序超过200万个职位。为了快速有效地搜索这些数据,我们使用Elastic Search,MongoDB是我们的主要数据存储。其中一个主要搜索功能是按地区,州和城市搜索。我们使用州缩写,ex。 Madison, WI
。有了这个功能,我们可以搜索整个地区(例如midwest
)并为中西部的所有地区提供结果,我们可以为各州做同样的事情,并为该州的城市提供所有结果。< / p>
我们遇到一个奇怪的问题,俄勒冈州的搜索没有点击,或点击不包括俄勒冈州内的城市,而只是全州工作(不是特定于任何地点)。
最突出的原因似乎是Apache Lucene将单词OR
保留为or
操作,这也是Oregon的缩写。这就是我认为的问题所在,因为这种奇怪的行为仅适用于俄勒冈州的搜索。
我的目标解决方案是改变&#34;状态&#34;字段为not_analyzed
以防止这种情况发生,并且还会更改我的搜索查询。
MongoDB River相对来说是关键,我可以将它指向数据库,甚至可以将其改进为集合。它将形成自己的映射到我的集合,问题在于没有文档或提及如何为使用River存储在MongoDB中并使用River索引到ES的数据定义自己的映射。
有没有人知道在预定义映射中更改字段的方法?否则,是否有人知道如何为MongoDB River定义自己的映射?文档或示例会很棒。这是一个令人困惑的问题,所以如果您需要更多细节,请随时提出。
答案 0 :(得分:1)