2015-04-19 4 views
2

Я использую 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"]} 

Что случилось?

ответ

0

решаемые! Ошибка в определении превышение Поле _id.

индекс: (жевательные/ops_index.rb)

define_type Op do 
    # field :_id #don't specify it! 
    field :created_at, :updated_at, :postponed, type: 'integer', index: :not_analyzed 
    field :state 
    field :name 
    field :description 
    end 
0

Дикая догадка, но как насчет следующего запроса?

scope = OpsIndex::Op.query match: { state: 'deactivated' } 
+0

** То же ** ** Но работа:. ** OpsIndex :: матч Op.query: {_id: «55263b48336f63004a000000 '} и OpsIndex :: Op.filter (match_all: {}) ** И, не работает: ** OpsIndex :: Op.query (соответствует: {name:' some text '}) и OpsIndex :: Op.filter (диапазон: {created_at: {gte: 100}}) – user26171

+0

Проанализировано поле «имя»? Тогда ваш запрос со значением «некоторый текст» не будет работать. См. Также http://stackoverflow.com/questions/18598418/elastic-search-exact-match – Zouzias

+0

Хорошо, я проверил анализируемый параметр для имени. Но как насчет фильтра по диапазону? – user26171

Смежные вопросы