簡體   English   中英

ElasticSearch和Tire:使用Mapping和to_indexed_json

[英]ElasticSearch & Tire: Using Mapping and to_indexed_json

在閱讀Tyre文檔時,我的印象是您應該使用mappingto_indexed_json方法,因為(我的理解是。) mapping用於饋送to_indexed_json

問題是,我找到了一些同時使用兩者的教程。 為什么?

基本上,我的應用程序現在可以與to_indexed_json一起使用,但是我不知道如何設置某些屬性的提升值(因此我開始查看映射的原因),我想知道同時使用這兩個屬性是否會產生一些沖突。

雖然mappingto_indexed_json方法是相關的,但實際上它們有兩個不同的用途。

mapping方法的目的是為索引內的文檔屬性定義映射 您可能希望將某些屬性定義為“ not_analyzed”,這樣就不會將其分解為令牌 ,也不會為該屬性設置特定的分析器,或者(如您提到的)索引時間提升因子。 您還可以定義多字段屬性, 日期類型的自定義格式等。

然后使用該映射 Tire自動為您的模型創建索引時

to_indexed_json方法的目的是為您的文檔/模型定義JSON序列化

默認的to_indexed_json方法確實使用您的映射定義,僅使用在映射中定義的屬性-基於這樣的基礎,即如果您足夠定義映射 ,則默認情況下Tire只會索引已定義映射的屬性。

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

這個自定義的MyModel#to_indexed_method通常不關心映射定義,而是從頭開始構建JSON序列化(通過使用ActiveRecord的to_json ,使用jbuilder之類的JSON構建器,或者只是構建一個普通的舊Hash並調用Hash#to_json )。

因此,要回答問題的最后一部分,同時使用mappingto_indexed_json絕對不會產生任何沖突,實際上,在to_indexed_json中使用高級功能實際上是必需的。

總結一下:

  1. 您使用mapping方法為搜索引擎定義模型的映射
  2. 您使用自定義的to_indexed_json方法定義搜索引擎如何查看您的文檔/模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM