2016-10-19 3 views
2

Ich habe Dokumente mit String-Feldern, die nicht analysiert werden (durch eine Zuordnung erzwungen oder global gesetzt). Ich versuche zu verstehen, was die praktische Unterschied zwischenWas ist der Unterschied zwischen einer Termabfrage und einer Übereinstimmung?

{ 
    "query": { 
     "bool": { 
      "must": [ 
       {"match": {"hostname": "hello"}}, 
      ] 
     } 
    } 
} 

und

{ 
    "query": { 
     "term": { 
      "hostname": "hello" 
     } 
    } 
} 

ich in der Dokumentation term queries sah, ist, dass es einen Unterschied gibt, wenn die Saiten analysiert werden (was nicht mein Fall ist) . Gibt es einen Grund, term vs match zu verwenden?

+0

'term' vs' match' richtig? – Val

+0

Ja, sorry - ich meinte natürlich 'match'. – WoJ

Antwort

3

In einer Abfrage term wird der gesuchte Begriff (d. H. hello) nicht analysiert und wird genau wie gegen die Begriffe im invertierten Index übereinstimmt.

In einer Abfrage match wird der gesuchte Begriff (d. H. hello) zuerst analysiert und dann mit den im invertierten Index vorhandenen Begriffen abgeglichen.

In Ihrem Fall, da hostnamenot_analyzed in Ihrem Mapping ist, sollte Ihre erste Wahl, um eine term Abfrage zu verwenden, da es keinen Sinn macht, für die Suche des gleichen Begriffs einen Begriff in der Suchzeit zu analysieren, die in nicht analysiert wurde, der erste Ort zur Indexierungszeit.

Verwandte Themen