2014-06-10 4 views
16

Ich versuche, die folgenden Begriff FilterElasticsearch Term Filter funktioniert nicht?

{ 
    "query": { 
    "term": { 
     "name": "terry harvey" 
    } 
    } 
} 

und ich bin immer 0 Treffer

{ 
    took: 3 
    timed_out: false 
    _shards: { 
    total: 5 
    successful: 5 
    failed: 0 
} 
hits: { 
    total: 0 
    max_score: 0 
    hits: [ ] 
    } 
} 

Als ich die "Match-Filter" verwenden stattdessen "Zeitfilter" zu tun, erhalte ich 48 Treffer.

Was mache ich falsch? = (

Dank!

Antwort

19

Zeit Abfragen und Filter nicht analysiert werden, werden nur genaue Übereinstimmungen sie Sinn finden. Auf der anderen Seite, Spiel-Abfragen analysiert und Ihren Namen Bereich wahrscheinlich auch analysiert. Mehr Infos here.

+0

Ich sehe, aber wie kann ich tun, um ein Dokument mit dem genauen Namen wie "Terry Harvey" zu erhalten? –

+4

Sie müssten Ihre Feldzuordnung zu [not_analyzed] ändern (http://www.elasticsearch.org/ guide/de/elasticsearch/guide/current/mapping-intro.html # _literal_index_literal) Wenn Sie sowohl exakte Werte als auch Volltext abfragen müssen, sollten Sie sich das [multi field] ansehen (http: //www.elasticsearch .org/Führer /de/elasticsearch/reference/current/mapping-core-types.html#_multi_fields_3) type. –

+0

Vielen Dank, ich werde es =) –