问题标签 [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.
ruby-on-rails - Elasticsearch - 从 Active Record 模型中自动导入记录
系统:
- 导轨 4
- 红宝石 2
- 弹性搜索 1.6.0
我正在使用 Elasticsearch 过滤记录并计算我的 Active Record 模型的统计数据。我希望我的 Elasticsearch 索引能够镜像我的 Postgres 数据库,以便将现有记录导入到我的索引中,新记录在创建时被索引,等等。
我担心我的两个模型包括这样的:
但是,当我打开 Rails 控制台并调用Bar.statistics
时,我会nil
进入每个领域。如果我然后执行Bar.import force: true
and then Bar.statistics
,我会在扩展的统计信息聚合中得到正确的非零值。
其他可能值得注意的事情:当我使用 Pry 在 Rails 控制台中打开 foo.rb 然后退出时,我遇到了一个Cannot define multiple included blocks for a Concern
错误(尽管加载应用程序工作正常)。
我是否缺少使我的记录自动导入 ES 的东西?
ruby-on-rails - Elastic Search Rails 查找关联的模型属性
我在我的 Rails 项目中使用 Elastic Search。我正在使用 elasticsearch-model gem 进行实时全文搜索。假设模型 A 属于模型 B。如果我在模型 AI 上进行搜索,我会根据我的搜索参数获得 10 条 A 记录。
但是当我通过 A 访问模型 B 时,例如: ABsome_attrib 我得到
如何在 ElasticSearch 中加载关联?
我也想要搜索结果中的所有记录。如何在搜索方法中指定 match_all?
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}
ruby-on-rails - elasticsearch-model - 如何设置 TTL 选项?
我正在使用弹性搜索模型(https://github.com/elastic/elasticsearch-rails/tree/master/elasticsearch-model),但我找不到在文档上设置 TTL 的方法。我尝试了几种方法,但没有成功。
我有一个名为“log”的模型和一个名为“logs”的索引。在模型中,我有以下映射:
在控制台中,这是我可以看到的:
但是,当使用 cURL 时,我只能使用模型属性而不是 ttl 选项:
我还尝试将 TTL 选项作为选项添加到批量导入中(为了实现这一点:https ://www.elastic.co/guide/en/elasticsearch/reference/1.4/docs-bulk.html#bulk- ttl)但我不能使用该选项:
关于我如何做到这一点的任何想法?
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
ruby-on-rails - 如何在 Elasticsearch 中导入父/子对象
我在我的 Rails 应用程序中使用 gems elasticsearch-rails 和 elasticsearch-model。在导入现有数据之前,我将此集成测试用作设置我的映射等的模板,这些数据在父模型和子模型之间具有相同的基本关联。
我知道集成测试由于回调而起作用,并且它在这些回调中设置了父 ID。
我想导入现有的问题和答案。似乎仅仅调用Questions.import
and是不够的Answers.import
。我收到了问题,但在我的 Elasticsearch 商店中没有得到任何答案。我想知道如何使用适当的父映射导入 Answers 对象。谁能给我任何提示?
elasticsearch-rails - 使用 elasticsearch-persistence ruby 的映射器附件类型的自定义映射
在我的项目中,我使用mapper-attachments插件将数据存储在活动记录模型中并在弹性搜索中索引 html 文档。我的文档映射如下所示:
我运行查询以仔细检查我的文档映射和结果:
它工作得很好(上面的类型:'附件')。我可以完美地通过 html doc 进行搜索。
我的 mysql 的 activerecord 存在性能问题,我真的不需要将它存储在数据库中,所以我决定迁移到存储在 elasticsearch 中。
我正在使用elasticsearch-persistence gem 进行实验。
我将映射配置如下:
但是当我对映射进行查询时,我得到了这样的结果:
这是错误的。谁能告诉我如何使用附件类型进行映射?
非常感谢您的帮助。
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
正确的范围。
有任何想法吗?
ruby-on-rails - 如何从 Rails 中的 elasticsearch 中删除不存在的文档?
在模型类中,我有以下代码来删除 ElasticSearch 中的索引文档(根据文档):
我rescue nil
用来捕获 ElasticSearch 在找不到文档时引发的 404 异常。
问题是异常仍然冒泡,rescue nil
代码没有捕捉到它。
如何删除 ElasticSearch 中的文档,无论它是否存在?
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