Я использую chewy.chewy поиск только по id
Я не могу найти «ops», используя любые поля op, кроме id.
Модель:
class Op
include Mongoid::Document
...
state_machine :initial => :draft do
...
end
update_index 'ops#op', :self
end
индекс:
class OpsIndex < Chewy::Index
define_type Op
end
Контроллер:
def index
OpsIndex.reset! # => true
OpsIndex.purge # => {\"acknowledged\"=>true}
OpsIndex::Op.import # => true
scope = OpsIndex::Op.query term: { _id: '55263b48336f63004a000000' }
scope.total_count # => 1 nice!
scope.to_a.inspect => #<OpsIndex::Op:0x00000006f5f310 @attributes={\"_id\"=>{\"$oid\"=>\"55263b48336f63004a000000\"}, \"state\"=>\"deactivated\" ...
#But
scope = OpsIndex::Op.query term: { state: 'deactivated' }
scope.total_count # => 0
end
В development.log:
[1m[32mOpsIndex::Op Search (7.4ms)[0m {:body=>{:query=>{:term=>{:_id=>"55263b48336f63004a000000"}}}, :index=>["development_ops"], :type=>["op"]}
[1m[32mOpsIndex::Op Search (3.2ms)[0m {:body=>{:query=>{:term=>{:state=>"deactivated"}}}, :index=>["development_ops"], :type=>["op"]}
Что случилось?
** То же ** ** Но работа:. ** OpsIndex :: матч Op.query: {_id: «55263b48336f63004a000000 '} и OpsIndex :: Op.filter (match_all: {}) ** И, не работает: ** OpsIndex :: Op.query (соответствует: {name:' some text '}) и OpsIndex :: Op.filter (диапазон: {created_at: {gte: 100}}) – user26171
Проанализировано поле «имя»? Тогда ваш запрос со значением «некоторый текст» не будет работать. См. Также http://stackoverflow.com/questions/18598418/elastic-search-exact-match – Zouzias
Хорошо, я проверил анализируемый параметр для имени. Но как насчет фильтра по диапазону? – user26171