2017-05-18 5 views
0

Wie pro docs ich diese Syntax verwenden:Elasticsearch + Rails mehrere `must` nicht richtig funktioniert

self.search(
    query: { 
    bool: { 
     must: { match: { type: 'user' } }, 
     must: { match: { status: status } }, 
     must: { range: { created_at: { from: date_from, to: date_to } } } 
    } 
    }, 
    size: 1000 
) 

Ich glaube, es sollte für alle drei Bedingungen zu suchen, sondern Abfrage all must aber zuletzt ignoriert:

<Elasticsearch::Model::Searching::SearchRequest:0x000000039b2c08 @definition= {:index=>"uusers", :type=>"user", :body=>{:query=>{:bool=>{:must=>{:range=>{:created_at=>{:from=>Mon, 25 Aug 2014, :to=>Thu, 18 May 2017}}}}}, :size=>1000}}

Was mache ich falsch?

Antwort

1

Wenn Sie mehrere Anweisungen haben, müssen Sie es in einem Array hinzufügen, wie unten:

self.search(
    query: { 
    bool: { 
     must: [ 
     { match: { type: 'user' } }, 
     { match: { status: status } }, 
     { range: { created_at: { from: date_from, to: date_to } } } 
     ] 
    } 
    }, 
    size: 1000 
) 
+0

Ich war sicher, dass ich es schon versucht, aber ich tat es nicht. Danke, das hat gut funktioniert – Vla

Verwandte Themen