标签: elasticsearch-model

升级到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

ruby-on-rails elasticsearch elasticsearch-model elasticsearch-rails

7
推荐指数
0
解决办法
797
查看次数

在elasticsearch中搜索字幕数据

有以下数据(简单的srt)

1
00:02:17,440 --> 00:02:20,375
Senator, we're making our final

2
00:02:20,476 --> 00:02:22,501
approach into Coruscant.

...
Run Code Online (Sandbox Code Playgroud)

在 Elasticsearch 中索引它的最佳方法是什么?现在有一个问题:我希望搜索结果突出显示链接到时间戳指示的确切时间。此外,还有多个 srt 行重叠的短语(例如final approach在上面的示例中)。

我的想法是

  • 将 srt 文件索引为列表类型,时间戳是索引。我相信这不会匹配重叠多个键的短语
  • 创建仅索引文本部分的自定义标记器。我不确定elasticsearch 能在多大程度上突出显示原始内容。
  • 仅索引文本部分并将其映射回弹性搜索之外的时间戳

或者还有另一种选择可以优雅地解决这个问题吗?

elasticsearch elasticsearch-model elasticsearch-mapping elasticsearch-query

7
推荐指数
1
解决办法
411
查看次数

Elasticsearch rails/Elasticsearch模型搜索模型关联

我有一个名为的模型Movie,如下所示:

class Movie < ActiveRecord::Base
  include Elasticsearch::Model
  include Elasticsearch::Model::Callbacks

  has_many :actors, after_add: [ lambda {|a,c| a.__elasticsearch__.index_document}],
                    after_remove: [ lambda {|a,c| a.__elasticsearch__.index_document}]

  settings index: {number_of_shards: 1} do
    mappings dynamic: 'false' do
      indexes :title, analyzer: 'snowball', boost: 100
      indexes :actors
    end
  end

   def as_indexed_json(options={})
    self.as_json(
      include: {
          actors: { only: :name}
      }
    )
  end
end
Run Code Online (Sandbox Code Playgroud)

当我这样做时Movie.first.as_indexed_json,我得到:

{"id"=>6, "title"=>"Back to the Future ", 
"created_at"=>Wed, 03 Dec 2014 22:21:24 UTC +00:00, 
"updated_at"=>Fri, 12 Dec 2014 23:40:03 UTC +00:00, 
"actors"=>[{"name"=>"Michael J …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails elasticsearch elasticsearch-model

5
推荐指数
1
解决办法
1064
查看次数

在Elasticsearch Rails中为jsonb字段的属性添加索引

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

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

示例 jsonb 值如下:

{"name" => "Test User", "values" => {"age" => 24, "gender" => "male"}, "married": false}
Run Code Online (Sandbox Code Playgroud)

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

数据库是postgres。

我添加了索引配置如下:

  mappings do
    indexes :id,      type: 'integer'
    indexes :user_id, type: 'integer'

    indexes :data do
      indexes :gender
    end
  end
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?

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

{"query": {
    "term": {
        "user_id": 1
    }
}}
Run Code Online (Sandbox Code Playgroud)

但不适用于此查询

{"query": {
    "term": {
        "gender": "male"
    }
}}
Run Code Online (Sandbox Code Playgroud)

提前致谢 !!!

postgresql ruby-on-rails elasticsearch elasticsearch-model elasticsearch-rails

5
推荐指数
1
解决办法
1635
查看次数

Rails __elasticsearch__.create_index!“根映射定义具有不支持的参数(mapper_parsing_exception)”

我在使用elasticsearch-rails时遇到问题,当我使用时Business.__elasticsearch__.create_index!出现错误:

{“error”:{“root_cause”:[{“type”:“mapper_parsing_exception”,“reason”:“根映射定义具有不受支持的参数:[业务:{dynamic=true,properties={id={type=integer}” }}]"}],"type":"mapper_parsing_exception","re​​ason":"无法解析映射 [_doc]: 根映射定义具有不受支持的参数: [business : {dynamic=true,properties={id={type =integer}}}]","caused_by":{"type":"mapper_parsing_exception","re​​ason":"根映射定义具有不受支持的参数:[业务:{dynamic=true,properties={id={type=integer }}}]“}},”状态“:400}

该请求的背后是:

PUT http://localhost:9200/development_businesses [状态:400,请求:0.081s,查询:N/A] {"settings":{"index":{"number_of_shards":1}},"mappings":{ "business":{"dynamic":"true","properties":{"id":{"type":"integer"}}}}}

我的模型代码:

`
after_save :reindex_model
Elasticsearch::Model.client = Elasticsearch::Client.new url: ENV['BONSAI_URL'], log: true
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
index_name [Rails.env, model_name.collection.gsub('///', '-')].join('_')
document_type self.name.downcase
`
Run Code Online (Sandbox Code Playgroud)

我已经定义了我的映射:

`
settings index: { number_of_shards: 1 } do
    mappings dynamic: 'true' do
        indexes :id, type: 'integer'
    end
end
`
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails elasticsearch elasticsearch-model elasticsearch-rails

4
推荐指数
1
解决办法
1475
查看次数

如何从 Rails 中的 elasticsearch 中删除不存在的文档?

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

after_commit on: [:destroy] do
  __elasticsearch__.delete_document rescue nil
end
Run Code Online (Sandbox Code Playgroud)

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

问题是异常仍然冒出来,rescue nil代码没有捕获它。

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

ruby-on-rails elasticsearch elasticsearch-model

1
推荐指数
1
解决办法
2480
查看次数