diff --git a/CHANGELOG.md b/CHANGELOG.md index 63a71d9..f3046f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## 0.7.6 [unreleased] +- Treat `id` and `_id` differently - Added `padding` option ## 0.7.5 diff --git a/lib/searchkick/index.rb b/lib/searchkick/index.rb index 26e1b44..9ac1ea9 100644 --- a/lib/searchkick/index.rb +++ b/lib/searchkick/index.rb @@ -83,7 +83,8 @@ module Searchkick source = record.search_data # stringify fields - source = source.inject({}){|memo,(k,v)| memo[k.to_s] = v; memo}.except("id", "_id") + source = source.inject({}){|memo,(k,v)| memo[k.to_s] = v; memo}.except("_id") + source["id"] ||= search_id(record) options = record.class.searchkick_options diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index 26926c8..278db75 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -195,8 +195,7 @@ module Searchkick # order if options[:order] - order = options[:order].is_a?(Enumerable) ? options[:order] : {options[:order] => :asc} - payload[:sort] = Hash[ order.map{|k, v| [k.to_s == "id" ? :_id : k, v] } ] + payload[:sort] = options[:order].is_a?(Enumerable) ? options[:order] : {options[:order] => :asc} end # filters @@ -383,8 +382,6 @@ module Searchkick def where_filters(where) filters = [] (where || {}).each do |field, value| - field = :_id if field.to_s == "id" - if field == :or value.each do |or_clause| filters << {or: or_clause.map{|or_statement| {and: where_filters(or_statement)} }} diff --git a/lib/searchkick/results.rb b/lib/searchkick/results.rb index d8c4c7d..3a83a4b 100644 --- a/lib/searchkick/results.rb +++ b/lib/searchkick/results.rb @@ -39,7 +39,7 @@ module Searchkick else hits.map do |hit| result = hit.except("_source").merge(hit["_source"]) - result["id"] = result["_id"] + result["id"] ||= result["_id"] # needed for legacy reasons Hashie::Mash.new(result) end end -- libgit2 0.21.0