繁体   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