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



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow