Ala*_*ain 20 ruby ruby-on-rails elasticsearch tire
在阅读轮胎文档时,我的印象是你应该使用其中之一mapping或to_indexed_json方法,因为(我的理解是......)mapping用来喂养to_indexed_json.
问题是,我找到了一些使用它们的教程.为什么?
基本上,我的应用程序现在正在使用to_indexed_json但我无法弄清楚如何设置某些属性的提升值(因此我开始查看映射的原因),我想知道是否使用两者会产生一些冲突.
kar*_*rmi 50
虽然mapping和to_indexed_json方法有关,但实际上它们有两个不同的用途.
该mapping方法的目的是为索引中的文档属性定义映射.您可能希望将某些属性定义为"not_analyzed",因此它不会被分解为标记,或者为属性设置特定的分析器,或者(如您所述)索引时间提升因子.您还可以定义多字段属性,日期类型的自定义格式等.
然后使用该映射,例如.当轮胎自动为您的模型创建索引时.
该to_indexed_json方法的目的是为您的文档/模型定义JSON序列化.
该默认to_indexed_json方法不使用你的映射定义,只使用在映射定义的属性-的基础上,如果你关心不够定义的映射,在默认情况下轮胎指标只定义映射属性.
现在,当您想要紧紧抓住模型实际上如何序列化为弹性搜索的 JSON时,您只需定义自己的to_indexed_json方法(如README指示).
此自定义MyModel#to_indexed_method通常不关心映射定义,并从头开始构建JSON序列化(通过利用ActiveRecord to_json,使用jbuilder等JSON构建器,或者仅构建普通的旧Hash和调用Hash#to_json).
因此,要回答问题的最后部分,使用两者mapping并且to_indexed_json绝对不会产生任何冲突,并且实际上需要在elasticsearch中使用高级功能.
总结一下:
mapping方法为搜索引擎定义模型的映射to_indexed_json方法来定义搜索引擎查看文档/模型的方式.