ElasticSearch & Tire:使用映射和 to_indexed_json

     2023-03-22     201

关键词:

【中文标题】ElasticSearch & Tire:使用映射和 to_indexed_json【英文标题】:ElasticSearch & Tire: Using Mapping and to_indexed_json 【发布时间】:2012-07-25 04:52:55 【问题描述】:

在阅读Tire 文档时,我的印象是您应该使用mappingto_indexed_json 方法,因为(我的理解是......)mapping 用于提供to_indexed_json .

问题是,我找到了一些同时使用两者的教程。为什么?

基本上,我的应用程序现在可以与 to_indexed_json 一起使用,但我不知道如何设置某些属性的提升值(因此我开始研究映射的原因),我想知道是否同时使用两者会产生一些冲突。

【问题讨论】:

【参考方案1】:

虽然mappingto_indexed_json 方法是相关的,但实际上它们有两种不同的用途。

mapping 方法的目的是为索引中的文档属性定义映射。您可能希望将某些属性定义为“not_analyzed”,因此它不会被分解为 tokens,或者为该属性设置特定的分析器,或者(正如您提到的)索引时间 boost em>因素。您还可以定义 multifield 属性、date 类型的自定义格式等。

然后使用此 映射。当轮胎自动creates an index for your model.

to_indexed_json 方法的目的是为您的文档/模型定义 JSON 序列化

default to_indexed_json method 确实使用了您的映射定义,仅使用映射中定义的属性——基于如果您足够关心定义 映射,默认情况下 Tire em> 仅索引具有定义映射的属性。

现在,当您想牢牢掌握模型实际上是如何为 elasticsearch 序列化为 JSON 时,您只需定义自己的 to_indexed_json 方法(如 README 所示)。

这个自定义MyModel#to_indexed_method 通常不关心映射 定义,而是从头开始构建 JSON 序列化(通过利用 ActiveRecord 的 to_json,使用 JSON 构建器,例如 jbuilder,或者只是构建一个普通的旧 Hash 并调用 Hash#to_json)。

因此,要回答您问题的最后一部分,同时使用 mappingto_indexed_json 绝对不会产生任何冲突,实际上是在 elasticsearch 中使用高级功能所必需的。

总结一下:

    您使用mapping 方法为搜索引擎定义模型的映射 您使用自定义 to_indexed_json 方法来定义搜索引擎如何查看您的文档/模型。

【讨论】:

如果我想为单个模型设置 2 个不同的索引怎么办。如何定义两个索引? 目前轮胎中的单个模型不能有两个单独的索引。 谢谢,非常清楚。所以to_indexed_json 方法的结果应该在搜索结果的_source 元素中?

elasticsearch和tyregem:“indexmissingexception[[products]missing]”?(代码片段)

我不确定如何将我的产品编入索引,因为我认为这就是为什么我会收到此错误:Tire::Search::SearchRequestFailedinSearchController#results404:"error":"IndexMissingException[[products]missing]","status":404这是我的产品型号:classProduct<ActiveRecord::Baseattr_acc... 查看详情

kmp+tire树(模板)(代码片段)

(colorRedKMP板子)#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e6+9;intla,lb,j,kmp[maxn];chara[maxn],b[maxn];intmain() cin>>a+1>>b+1; la=strlen(a+1),lb=strlen(b+1); for(inti=2;i<=lb;i++)//第一为默认为0 while(j&&b[i]!=b[j+1]) j=kmp[j]; //ABCA的相同... 查看详情

Elasticsearch-hadoop & Elasticsearch-spark sql - 语句跟踪扫描&滚动

】Elasticsearch-hadoop&Elasticsearch-sparksql-语句跟踪扫描&滚动【英文标题】:Elasticsearch-hadoop&Elasticsearch-sparksql-Tracingofstatementsscan&scroll【发布时间】:2015-11-1307:27:12【问题描述】:我们正在尝试将ES(1.7.2,4节点集群)与Spar... 查看详情

Rails 4.1.0 elasticsearch 轮胎关联

】Rails4.1.0elasticsearch轮胎关联【英文标题】:Rails4.1.0elasticsearchTireassociation【发布时间】:2014-04-0912:20:02【问题描述】:升级到Rails4.1.0后,我的(re)Tiregem集成出现错误在我使用Rails4.0.4在我的ProductModel中运行此代码之前:defself.searc... 查看详情

thexorlargestpair(tire字典树应用)(代码片段)

题目链接:传送门思路:建立一个32位的字典树,对每一个要插入的数字查找它异或的最大值(就是尽量全部二进制的值都相反),然后获得两个数异或的最大值。#include<iostream>#include<cstdio>#include<cstring>usingnamespacest... 查看详情

Elastic Search:如何查看索引数据

】ElasticSearch:如何查看索引数据【英文标题】:ElasticSearch:howtoseetheindexeddata【发布时间】:2012-02-1519:23:31【问题描述】:我在使用ElasticSearch和Rails时遇到了问题,其中一些数据由于attr_protected而没有被正确索引。ElasticSearch将索... 查看详情

在 Elasticsearch 中加载自定义同义词文件时出错

】在Elasticsearch中加载自定义同义词文件时出错【英文标题】:ErrorloadingcustomsynonymfileinElasticsearch【发布时间】:2013-02-1119:07:16【问题描述】:我在EC2单服务器设置上使用Rails、Tire和Elasticsearch,没有分片或复制(这是JenkinsCI服务... 查看详情

elasticsearch——简介&安装

1.Elasticsearch是什么?TheElasticStack,包括Elasticsearch、Kibana、Beats和Logstash(也称为ELKStack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为ES,... 查看详情

elasticsearch——简介&安装

1.Elasticsearch是什么?TheElasticStack,包括Elasticsearch、Kibana、Beats和Logstash(也称为ELKStack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为ES,... 查看详情

弹性搜索/轮胎:如何映射到关联属性?

...弹性搜索/轮胎:如何映射到关联属性?【英文标题】:ElasticSearch/Tire:Howtomaptoassociationattribute?【发布时间】:2012-08-1719:53:55【问题描述】:我将Tire用于弹性搜索。在我的应用程序中,我有2个模型;价格和产品。我正在尝试搜索... 查看详情

elasticsearch在javaapi中的操作(入门)(代码片段)

目录2.2.5JavaAPI操作(1)环境准备&创建ES客户端(2)ES索引创建(3)ES索引&查询&删除(4)文档新增&修改新增修改数据(5)文档的批量新增&批量删除批量新增批量删除(6)高级查询&全量查询全量查询(7)高级查询&分页查询&... 查看详情

contacts(tire模板题)

We‘regoingtomakeourownContactsapplication!Theapplicationmustperformtwotypesofoperations:addname,whereisastringdenotingacontactname.Thismuststoreasanewcontactintheapplication.findpartial,whereisastring 查看详情

elasticsearch-文档精确查询(term)(代码片段)

Elasticsearch-文档精确查询(term)match&termmatch:匹配查询term:精准查询term&match+text&keywordterm&match区别term:精确查询,对查询的值不分词,直接进倒排索引去匹配。match:模糊查询,对查询的值分词,对分词的结果一一进... 查看详情

Elasticsearch & X-Pack:如何从嵌套文档中获取顶点/连接

】Elasticsearch&X-Pack:如何从嵌套文档中获取顶点/连接【英文标题】:Elasticsearch&X-Pack:howtogetvertices/connectionsfromnesteddocuments【发布时间】:2017-06-0811:37:24【问题描述】:我刚开始使用X-PackforElasticsearch并希望连接来自嵌套文档... 查看详情

elasticsearch系列一:elasticsearch(es简介安装&amp;配置集成ikanalyzer)

一、ES简介1.ES是什么?Elasticsearch是一个开源的搜索引擎,建立在全文搜索引擎库ApacheLucene基础之上用Java编写的,它的内部使用Lucene做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏Lucene的复杂性... 查看详情

elasticsearch集群安装(代码片段)

...:1核2gjdk1.8+  1.下载wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz  2.解压tar-zxvfelasticsearch-6.2.2.tar.gz  3.设置权限chmod-R777elasticsearch-6.2.2  4.添加非root用户adduserwulei&&passwdwulei参考https://blog.csdn.net/u0... 查看详情

hud-5790prefix(主席树+tire)

...公共字串所以没写555555,其实是求公共前缀。做法是建立tire,把tire上的点编号看成是值,查询第l到第r个字符串的区间内不重复的值的个数。建立主席树维护即可 #include<cstring>#include<cstdio>#include<algorithm>#include&l... 查看详情

elasticstack系列之十六&elasticsearch5.xindex/create和update源码分析

开篇  在ElasticSearch系列十四中提到的问题即ElasticStack系列之十四&ElasticSearch5.xbulkupdate中重复id性能骤降,继续这个问题再继续查看更加多的源代码,看看底层在执行index、create和update操作到底有什么不同,有什么可以使得我... 查看详情