Elasticsearch
Such-API
Suche…
Einführung
Mit der Such-API können Sie eine Suchabfrage ausführen und Suchtreffer abrufen, die der Abfrage entsprechen. Die Abfrage kann entweder mit einer einfachen Abfragezeichenfolge als Parameter oder mit einem Anfragetext bereitgestellt werden.
Routing
Wenn Sie eine Suche ausführen, wird sie an alle Index- / Index-Shards gesendet (Round-Robin zwischen Replikaten). Welche Shards gesucht werden, kann durch Angabe des Routing-Parameters gesteuert werden. Wenn Sie zum Beispiel Tweets indizieren, kann der Routing-Wert der Benutzername sein:
curl -XPOST 'localhost:9200/twitter/tweet?routing=kimchy&pretty' -d'
{
"user" : "kimchy",
"postDate" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}'
Suche mithilfe des Anfragetextes
Die Suche kann auch über Elasticsearch mit einem Such-DSL durchgeführt werden. Das Abfrageelement innerhalb des Suchanforderungstextes ermöglicht das Definieren einer Abfrage mit dem Query DSL.
GET /my_index/type/_search
{
"query" : {
"term" : { "field_to_search" : "search_item" }
}
}
Multi-Suche
Mit der Option multi_search können Sie eine Abfrage in mehreren Feldern gleichzeitig suchen.
GET /_search
{
"query": {
"multi_match" : {
"query": "text to search",
"fields": [ "field_1", "field_2" ]
}
}
}
Wir können auch die Punktzahl bestimmter Felder mit dem Boost-Operator (^) erhöhen und Platzhalter im Feldnamen (*) verwenden.
GET /_search
{
"query": {
"multi_match" : {
"query": "text to search",
"fields": [ "field_1^2", "field_2*" ]
}
}
}
URI-Suche und Hervorhebung
Eine Suchabfrage kann ausschließlich unter Verwendung eines URI ausgeführt werden, indem Anforderungsparameter angegeben werden. Nicht alle Suchoptionen werden angezeigt, wenn eine Suche mit diesem Modus ausgeführt wird. Dies kann jedoch für schnelle "Curl-Tests" nützlich sein.
GET Index/type/_search?q=field:value
Eine weitere nützliche Funktion ist das Hervorheben der Treffer in den Dokumenten.
GET /_search
{
"query" : {
"match": { "field": "value" }
},
"highlight" : {
"fields" : {
"content" : {}
}
}
}
In diesem Fall wird das jeweilige Feld für jeden Suchtreffer hervorgehoben