rails ruby-on-rails ruby elasticsearch tire

ruby-on-rails - rails - elasticsearch model gem



ElasticSearch & Tire: Usar Mapping y to_indexed_json (1)

Mientras que los métodos de mapping y to_indexed_json están relacionados, de hecho tienen dos propósitos diferentes.

El propósito del método de mapping es definir el mapeo de las propiedades del documento dentro de un índice. Es posible que desee definir cierta propiedad como "not_analyzed", por lo que no se divide en tokens , o establecer un analizador específico para la propiedad, o (como usted menciona) el factor de aumento de tiempo de indexación. También puede definir propiedades de campos múltiples , formatos personalizados para tipos de fecha , etc.

Este mapeo se utiliza, por ejemplo, Cuando Tire crea automáticamente un índice para su modelo .

El propósito del método to_indexed_json es definir una serialización JSON para sus documentos / modelos.

El método por defecto to_indexed_json usa su definición de mapeo, para usar solo las propiedades definidas en el mapeo, sobre la base de que si le importa lo suficiente como para definir el mapeo , de manera predeterminada, los índices de neumáticos solo propiedades con mapeo definido.

Ahora, cuando desee un control estricto de cómo su modelo se serializa de hecho en JSON para elasticsearch , simplemente defina sus propios métodos to_indexed_json (como lo indica README).

Este MyModel#to_indexed_method por lo general no se preocupa por la definición de mapeo , y construye la serialización JSON desde cero (al aprovechar ActiveRecord''s to_json , usando un constructor JSON como jbuilder , o simplemente construyendo un Hash antiguo y llamando a Hash#to_json ).

Por lo tanto, para responder a la última parte de su pregunta, usar mapping y to_indexed_json no creará ningún conflicto en absoluto, y de hecho se requiere que use funciones avanzadas en elasticsearch.

Para resumir:

  1. Utiliza el método de mapping para definir el mapeo de sus modelos para el motor de búsqueda
  2. Utiliza un método personalizado de to_indexed_json para definir cómo el motor de búsqueda ve sus documentos / modelos.

Mientras leía el documento de Tire , tenía la impresión de que deberías usar los métodos de mapping o to_indexed_json , ya que (según entendí ...) el mapping se usa para alimentar a to_indexed_json .

El problema es que encontré algunos tutoriales donde se usan ambos. ¿POR QUÉ?

Básicamente, mi aplicación funciona ahora mismo con to_indexed_json pero no puedo averiguar cómo establecer el valor de impulso de algunos de los atributos (de ahí la razón por la que empecé a buscar en el mapeo) y me preguntaba si usar ambos crearía algunos conflictos.