问题标签 [elasticsearch-model]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
456 浏览

ruby-on-rails - Elasticsearch - 从 Active Record 模型中自动导入记录

系统:

  • 导轨 4
  • 红宝石 2
  • 弹性搜索 1.6.0

我正在使用 Elasticsearch 过滤记录并计算我的 Active Record 模型的统计数据。我希望我的 Elasticsearch 索引能够镜像我的 Postgres 数据库,以便将现有记录导入到我的索引中,新记录在创建时被索引,等等。

我担心我的两个模型包括这样的:

但是,当我打开 Rails 控制台并调用Bar.statistics时,我会nil进入每个领域。如果我然后执行Bar.import force: trueand then Bar.statistics,我会在扩展的统计信息聚合中得到正确的非零值。

其他可能值得注意的事情:当我使用 Pry 在 Rails 控制台中打开 foo.rb 然后退出时,我遇到了一个Cannot define multiple included blocks for a Concern错误(尽管加载应用程序工作正常)。

我是否缺少使我的记录自动导入 ES 的东西?

0 投票
2 回答
968 浏览

ruby-on-rails - Elastic Search Rails 查找关联的模型属性

我在我的 Rails 项目中使用 Elastic Search。我正在使用 elasticsearch-model gem 进行实时全文搜索。假设模型 A 属于模型 B。如果我在模型 AI 上进行搜索,我会根据我的搜索参数获得 10 条 A 记录。

但是当我通过 A 访问模型 B 时,例如: ABsome_attrib 我得到

如何在 ElasticSearch 中加载关联?

我也想要搜索结果中的所有记录。如何在搜索方法中指定 match_all?

0 投票
1 回答
806 浏览

ruby-on-rails - 列字段的索引不适用于 ElasticSearch

我正在我的模型中实现 ElasticSearch 集成:

在我的 Rails 控制台中,我做了:

我的查询

1) 当我使用除名称和 id 以外的其他字段值进行搜索时,它会为我提供搜索结果。例如:

result = MissionDef.search 'app' --- 有效 result.records.count => 1

我猜不应该是这种情况。

2) Missiondef.first.as_indexed_json => 不能正常工作,它给了我 o/p 作为 JSON 的整个对象

{"id"=>226, "ade_channel_key"=>"d403d658313e6c35ce", "name"=>"测试任务", "icon"=>"/app/assets/images/badges/Showedup.png", "定义" =>“{}”,“created_at”=>2015 年 8 月 4 日星期二 11:30:08 UTC +00:00,“updated_at”=>2015 年 8 月 4 日星期二 11:30:08 UTC +00:00,“ container_id"=>883, "public"=>true}

0 投票
0 回答
252 浏览

ruby-on-rails - elasticsearch-model - 如何设置 TTL 选项?

我正在使用弹性搜索模型(https://github.com/elastic/elasticsearch-rails/tree/master/elasticsearch-model),但我找不到在文档上设置 TTL 的方法。我尝试了几种方法,但没有成功。

我有一个名为“log”的模型和一个名为“logs”的索引。在模型中,我有以下映射:

我希望它类似于https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-ttl-field.html#mapping-ttl-field

在控制台中,这是我可以看到的:

但是,当使用 cURL 时,我只能使用模型属性而不是 ttl 选项:

我还尝试将 TTL 选项作为选项添加到批量导入中(为了实现这一点:https ://www.elastic.co/guide/en/elasticsearch/reference/1.4/docs-bulk.html#bulk- ttl)但我不能使用该选项:

关于我如何做到这一点的任何想法?

0 投票
1 回答
334 浏览

ruby-on-rails - ElasticSearch 不使用所有字段(字符串数组)进行搜索

我刚刚开始在 Rails 中使用 ES,但遇到了一些我不明白的事情:

我有一个 Artist 模型(为示例简化):

我的问题是 ES 搜索没有使用 get_aliases 属性来给出结果:只搜索 'name' 属性:

我有一个开发者。有几个艺术家的数据库,其中没有一个包含字符串“Phil”,但一个在其别名中有“Phillip”。当我尝试 aArtist.__elasticsearch__.search('phil').count我得到 0 结果。

我试过Artist.all.__elasticsearch__.import得到:

Artist.__elasticsearch__.refresh_index! 得到:

(不确定这两个命令之间有什么区别......),但没有运气:/

我的问题是因为我使用字符串数组作为属性吗?我应该以不同的方式对其进行索引吗?

欢迎任何想法/帮助!

编辑:
我正在使用
gem 'elasticsearch-rails', '~> 0.1.7'
gem 'elasticsearch-model', '~> 0.1.7'

并且安装的 ElasticSearch 服务器是 1.7.1

0 投票
1 回答
801 浏览

ruby-on-rails - 如何在 Elasticsearch 中导入父/子对象

我在我的 Rails 应用程序中使用 gems elasticsearch-rails 和 elasticsearch-model。在导入现有数据之前,我将此集成测试用作设置我的映射等的模板,这些数据在父模型和子模型之间具有相同的基本关联。

我知道集成测试由于回调而起作用,并且它在这些回调中设置了父 ID。

我想导入现有的问题和答案。似乎仅仅调用Questions.importand是不够的Answers.import。我收到了问题,但在我的 Elasticsearch 商店中没有得到任何答案。我想知道如何使用适当的父映射导入 Answers 对象。谁能给我任何提示?

0 投票
1 回答
840 浏览

elasticsearch-rails - 使用 elasticsearch-persistence ruby​​ 的映射器附件类型的自定义映射

在我的项目中,我使用mapper-attachments插件将数据存储在活动记录模型中并在弹性搜索中索引 html 文档。我的文档映射如下所示:

我运行查询以仔细检查我的文档映射和结果:

它工作得很好(上面的类型:'附件')。我可以完美地通过 html doc 进行搜索。

我的 mysql 的 activerecord 存在性能问题,我真的不需要将它存储在数据库中,所以我决定迁移到存储在 elasticsearch 中。

我正在使用elasticsearch-persistence gem 进行实验。

我将映射配置如下:

但是当我对映射进行查询时,我得到了这样的结果:

这是错误的。谁能告诉我如何使用附件类型进行映射?

非常感谢您的帮助。

0 投票
1 回答
144 浏览

ruby-on-rails - 在 Elasticsearch-Model 的 `mapping do` 中使用类方法

我正在使用Elasticsearch-Model. 我将所有与搜索相关的方法提取到一个ActiveSupport::Concern. 以下代码是在使用 Tire gem 时编写的,但我将 gem 升级到 Elasticsearch-Rails 和 Elasticsearch-Model,因为 Tire 不支持 Elasticsearch 1.x。当前的实现如下所示:

但我收到了这个错误:

我尝试了很多东西,例如 usinddef included(base)和 then base.eval,但我无法进入class_eval正确的范围。

有任何想法吗?

0 投票
2 回答
1793 浏览

ruby-on-rails - 如何从 Rails 中的 elasticsearch 中删除不存在的文档?

在模型类中,我有以下代码来删除 ElasticSearch 中的索引文档(根据文档):

rescue nil用来捕获 ElasticSearch 在找不到文档时引发的 404 异常。

问题是异常仍然冒泡,rescue nil代码没有捕捉到它。

如何删除 ElasticSearch 中的文档,无论它是否存在?

0 投票
0 回答
857 浏览

ruby-on-rails - 升级到 Rails 4.2.5.1 后出现 VersionConflictEngineException

在将 Rails 更新到 4.2.5.1 并更新用户文档后,我不时收到此异常

Elasticsearch::Transport::Transport::Errors::Conflict: [409] {"error":"VersionConflictEngineException[[users][0] [user][1]: 版本冲突,当前 [7],提供 [6] ]","状态":409}

但是,我没有在更新请求中传递任何明确的版本。我想两个不同的进程正在尝试同时更新同一个文档,但是除了 Rails 版本之外它没有改变任何东西。

我正在使用elasticsearch-model(0.1.8)elasticsearch-rails(0.1.8)elasticsearch(1.0.15)elasticsearch-api(1.0.15)和elasticsearch-transport(1.0.15)

elasticsearch版本是Version: 1.2.2, Build: 9902f08/2014-07-09T12:02:32Z, JVM: 1.7.0_65