在将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
有以下数据(简单的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在上面的示例中)。
我的想法是
或者还有另一种选择可以优雅地解决这个问题吗?
elasticsearch elasticsearch-model elasticsearch-mapping elasticsearch-query
我有一个名为的模型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) 我是 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
我在使用elasticsearch-rails时遇到问题,当我使用时Business.__elasticsearch__.create_index!出现错误:
{“error”:{“root_cause”:[{“type”:“mapper_parsing_exception”,“reason”:“根映射定义具有不受支持的参数:[业务:{dynamic=true,properties={id={type=integer}” }}]"}],"type":"mapper_parsing_exception","reason":"无法解析映射 [_doc]: 根映射定义具有不受支持的参数: [business : {dynamic=true,properties={id={type =integer}}}]","caused_by":{"type":"mapper_parsing_exception","reason":"根映射定义具有不受支持的参数:[业务:{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
在模型类中,我有以下代码来删除 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中的文档,无论它是否存在?
postgresql ×1