2012-07-26 60 views
20

在讀取Tire醫生,我是,你應該使用mappingto_indexed_json方法,因爲印象中(我的理解是... ...)的mapping用來喂to_indexed_jsonElasticSearch和輪胎:使用了配置和to_indexed_json

的問題是,我找到了一些教程,其中兩個被使用。爲什麼?

基本上,我的應用程序現在的工作原理與to_indexed_json,但我想不出如何設置的一些屬性的提升值(所以我開始尋找映射的原因),如果同時使用會我想知道造成一些衝突。

回答

49

雖然mappingto_indexed_json方法有關係,他們有兩個不同的目的,其實。

mapping方法的目的是爲了定義一個索引內的文檔屬性映射。您可能要定義某些屬性爲「not_analyzed」,所以它不分成令牌,或者設置一個特定的分析儀的財產,或(你提到)分度時間提升因素。您也可以定義萬事屬性,自定義格式日期類型等

映射然後使用如。當輪胎自動creates an index for your model

to_indexed_json方法的目的是定義一個JSON序列爲您的文檔/模型。

default to_indexed_json method確實使用你的映射定義,只使用在映射定義的屬性 - 的基礎上,如果你關心不夠定義映射,在默認情況下輪胎指數僅與定義的映射屬性。

現在,當你想在你的模型如何,其實是序列化爲JSON用於elasticsearch得緊,你剛纔定義自己to_indexed_json方法(如README指示)。

這種風俗MyModel#to_indexed_method通常不關心映射定義,並從頭開始構建JSON序列化(通過利用的ActiveRecord的to_json,使用JSON建設者如jbuilder,或只是建立一個普通的老哈希並呼籲Hash#to_json )。

因此,要回答你的問題的最後一部分,同時使用mappingto_indexed_json絕對產生任何衝突,其實是在elasticsearch使用高級功能的需要。

綜上所述:

  1. 您使用mapping方法來定義你的模型的搜索引擎
  2. 您使用自定義to_indexed_json方法來定義搜索引擎是如何看待你的文件/模型的映射。
+1

如果我想要爲單個模型創建2個不同的索引,該怎麼辦。我如何定義兩個索引? – EmFeld 2013-04-04 07:41:02

+0

您目前在Tire中的單個模型不能有兩個單獨的索引。 – karmi 2013-04-04 08:19:00

+0

謝謝,非常清楚。那麼'to_indexed_json'方法的結果應該在搜索結果的'_source'元素中? – aurels 2014-07-16 13:52:09

相關問題