问题标签 [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 投票
2 回答
785 浏览

ruby-on-rails-4 - Elasticsearch 不使用“not_analyzed”索引

我无法弄清楚为什么 elasticsearch 不使用 not_analysed 索引进行搜索。我的模型中有以下设置,

而且我在 elasticsearch 的映射是正确的,如下所示。

但问题是,当我对未分析的字段(姓名和电子邮件,因为我希望它们不被分析)进行搜索时,它只搜索完整的单词。就像下面的示例一样,它应该返回 John、Johny 和 Tiger,所有 3 条记录。但它只返回 2 条记录。

我正在搜索如下

这就是我在回调中在我的用户对象上创建索引的方式after_save

一些应该匹配的文件

请有任何建议。

0 投票
2 回答
845 浏览

ruby-on-rails - Rails - 使用 Heroku 的 Elasticsearch (Bonsai) - 性能问题

我在我的一个Ruby on Rails项目中使用Elasticsearch - Bonsai 。所以,到目前为止,事情进展得很顺利。但是,当我们向最终用户推出这个应用程序并且人们开始进入的那一刻,我们注意到单个弹性搜索查询需要 5-7 秒才能响应(对我们来说真的很糟糕)——尽管我们有8-2 倍的 Web测功机到位。

因此,我们决定将Bonsai插件升级到Bonsai 10,并添加了NewRelic插件(以关注单个查询需要多少时间来响应)

下面是我们的环境设置:

因此,我们再次将数据导入 Elasticsearch,这是我们的ElasticSearch集群运行状况:

以下是NewRelic的ES调用数据

在此处输入图像描述

这表明有很大的理由担心。

我的模型article.rb下面:

现在,如果我查看Heroku的 BONSAI 10 计划,它给了我20 个分片,但在集群的当前状态下,它仅使用 1 个活动主分片和 2 个活动分片。我突然想到几个问题:

  1. 将分片数量增加到 20 会有所帮助吗?
  2. 缓存 ES 查询是可能的——你也建议这样做吗?——它有什么优点和缺点吗?

请帮助我找到可以减少时间并提高 ES 工作效率的方法。

更新

这是我创建的小代码片段https://jsfiddle.net/puneetpandey/wpbohqrh/2/(作为参考),以准确说明为什么我需要对ElasticSearch进行如此多的调用

在上面的示例中,我显示了几个计数(在每个复选框元素的前面)。为了显示这些计数,我需要通过点击 ES 来获取我得到的数字

好的,所以在阅读了评论并在这里找到了一篇好文章后:如何在一台服务器上配置弹性搜索集群以获得最佳搜索性能我想我已经足够重新构建

最好的,

普奈特

0 投票
0 回答
561 浏览

ruby-on-rails - elasticsearch-rails 映射如何转换为 elasticsearch 索引配置?

我正在使用 elasticsearch-rails (elasticsearch-model) gem,我对 model-dsl 最终如何转换为索引配置感到有些困惑。

我有以下代码来直接设置索引,它工作正常:

但是,当我(尝试)在模型中做同样的事情时,我得到一个错误:

错误信息:

如果我可以带上 elasticsearch-model(oder elasticsearch)来向我展示在创建该索引时发送到 elasticsearch 的整个请求,那将会很有帮助。

谢谢你的任何建议:)

0 投票
1 回答
1215 浏览

ruby-on-rails - 在elasticsearch rails中为jsonb字段的属性添加索引

我是 elasticsearch 的初学者,我想为我拥有的 jsonb 字段中的字段添加索引。这不是嵌套关系。

我有带有字段id(整数)、user_id(整数)、data(jsonb)的表有效负载。

示例 jsonb 值如下:

我想为“数据”(jsonb列)的“值”部分内的“性别”字段添加索引。

数据库是postgres。

我添加了索引配置如下:

这是正确的吗?

我得到了查询的准确结果,

但不适用于此查询

提前致谢 !!!

0 投票
1 回答
154 浏览

mysql - Elasticsearch for mysql 查看导轨

如何为 MYSQL 中的视图创建弹性搜索索引?

我尝试为mysql视图的迁移制作模型并在模型中放置

并放入elasticsearch.rb

但似乎该行HistoryView.import 给出了错误

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'history_views.' 在“订单子句”中:SELECT history_views.* FROM history_views ORDER BY history_views。升速限制 1000

我认为 gem 需要一个主键来订购它,并且视图中不存在。

我该如何解决这个问题?我是否必须覆盖 gem 中的某些功能?

0 投票
0 回答
263 浏览

ruby-on-rails - 弹性搜索查询搜索 1=0 并且不返回任何结果

我最近使用 elasticsearch-rails 和 elasticsearch-model gems 将 ES 添加到 Ruby on Rails 应用程序中。我已经为我的模型添加了适当的索引和映射并将其导入。但我的搜索总是返回 0 条记录。该查询始终搜索 1=0。

然而:

我希望这里返回 1 条记录,但没有匹配项。

谁能帮我这个?我在这里错过了什么吗?

Report.import 显示导入了 4 条记录,但索引页面中的文档计数没有变化。

0 投票
1 回答
1095 浏览

ruby-on-rails - 您如何将摄取附件插件与 elasticsearch-rails 一起使用?

我之前使用的是现在已弃用的 mapper-attachments 插件,它与普通索引一起使用相当容易。现在 ingest-attachment 已经取代了它并需要管道等。如何正确使用它变得令人困惑。

假设我有一个名为 的模型Media,它有一个file包含 base64 编码文件的字段。我在该文件中有以下映射:

我通过 curl 创建了一个附件管道:

现在,以前一个简单的Media.last.__elasticsearch__.index_document就足以file通过mapper-attachments插件索引记录以及实际记录。

我不确定如何ingest-attachment使用管道和elasticsearch-railsgem 来做到这一点。

我可以通过 curl 执行以下 PUT:

这将索引编码文件,但显然它不会索引模型的其余数据(或者如果它之前被索引,则完全覆盖它)。我真的不想在 curl 命令中包含每个模型属性以及文件。有没有更好或更简单的方法来做到这一点?我是否完全没有管道并且摄取应该工作?

0 投票
1 回答
51 浏览

elasticsearch - 无法让 Elasticsearch 过滤器工作

使用 Elasticsearch 2 和 Rails 4,使用 elasticsearch-model gem

一切都很好,甚至地理点距离也在工作。但是,我一生都无法弄清楚如何使简单的布尔过滤器起作用。我有一个简单的布尔值“exclude_from_search_results”(如果为真),应该会导致从结果中过滤掉记录。

这是我在 rails 控制器中的查询(没有过滤器):

我已经在 bool 或 query 部分或外部添加了它,但我要么没有得到任何文档,要么得到所有文档。(9000 应该匹配)

例子:

我还尝试将过滤器子句放在不同的位置,但要么出错,要么没有结果。我究竟做错了什么??可能缺少一些简单的东西......

这是我的映射:

任何指针都非常感谢...

0 投票
0 回答
247 浏览

ruby-on-rails - 索引内类型的 Elasticsearch 更新映射和重新索引

我有一个名为 business_data 的索引,其中包含不同的类型:客户端、消息、事件等......其中每一个都有自己的映射、分析器等。我需要更新客户端的映射并重新索引(从 activerecord 重新导入,例如),无需停机。我在网上找到了几篇关于零停机时间的文章(创建新索引,更新别名以指向新索引,删除旧索引)。这些解决方案讨论了更改整个索引,这意味着我的整个业务数据......我只需要更新类型。有没有办法创建一个新类型并简单地更改别名?关于如何做到这一点的任何其他建议?它是一个 Ruby on rails 应用程序,我正在使用 elasticsearch-rails。

谢谢!

0 投票
1 回答
247 浏览

ruby-on-rails - ElasticSearch + Rails 多个“必须”无法正常工作

根据文档,我使用这种语法:

我相信它应该寻找所有 3 个条件,但查询忽略了must最后一个条件:

<Elasticsearch::Model::Searching::SearchRequest:0x000000039b2c08 @definition= {:index=>"uusers", :type=>"user", :body=>{:query=>{:bool=>{:must=>{:range=>{:created_at=>{:from=>Mon, 25 Aug 2014, :to=>Thu, 18 May 2017}}}}}, :size=>1000}}

我究竟做错了什么?