So fügen Sie Daten in elasticsearch ein


72

Ich bin neu bei Elasticearch und habe 2 Tage lang versucht, einige Daten in Elasticearch einzufügen. Ich habe bei Google festgestellt, dass es viele Seiten gibt, die beim Erstellen eines Index helfen (mir ist "Index" nicht klar, bedeutet das "Einfügen" in anderen Begriffen?). Dann geben viele Stellen einen Befehl zum Einrollen ein, und das tue ich wirklich nicht wissen, wo diese Codezeilen ausgeführt werden müssen, um Daten einzufügen. Beispiel:

curl -XPOST "http://[localhost]:9200/indexname/typename/optionalUniqueId" -d '{ "field" : "value" }'

Ich verwende Windows 7 und habe Java installiert und Elasticsearch erfolgreich ausgeführt. Könnte mir jemand mehr Details darüber zeigen, wie man Daten in Elasticearch einfügt?

Danke vielmals

Antworten:


81

Sie müssen zuerst die curlBinärdatei auf Ihrem PC installieren . Sie können es hier herunterladen .

Danach entpacken Sie es in einen Ordner. Sagen wir mal C:\curl. In diesem Ordner finden Sie curl.exeDateien mit mehreren .dllDateien.

Nun öffnen Sie eine Eingabeaufforderung durch Eingabe cmdvon der start menu. Wenn cd c:\curlSie dort eingeben, gelangen Sie zum Curl-Ordner. Führen curlSie nun den Befehl aus, den Sie haben.

Eine Sache, Windows unterstützt kein einfaches Anführungszeichen um die Felder. Sie müssen also doppelte Anführungszeichen verwenden. Zum Beispiel habe ich Ihren Curl-Befehl wie den entsprechenden konvertiert.

curl -H "Content-Type: application/json" -XPOST "http://localhost:9200/indexname/typename/optionalUniqueId" -d "{ \"field\" : \"value\"}"

1
Vielen Dank, Sabuj, ich habe CURL installiert und den Code ausgeführt. Er erstellt im Ordner 'data' einen Indexnamen. Aber jedes Mal, wenn ich Daten in ElasticSearch einfügen muss, muss ich dieses Tool wie CURL, RESTClient ... verwenden. Soweit ich weiß, verwendet ElasticSearch den Webservice, um mit Daten in Kontakt zu treten. Stimmt das? Wie kann ich vorgehen, wenn ich mit meiner Anwendung mit Elastic interagieren muss? Vielen Dank

Ich habe nicht viel Ahnung davon ElasticSearch. Möglicherweise reicht eine POST GETAnfrage aus Ihrer Bewerbung aus. Ich bin mir nicht sicher, weil ich nicht weiß, wie ich eine Anwendung mit erstellen soll ElasticSearch.
Sabuj Hassan

Danke Sabuj Hassan, ich werde wiederkommen, wenn ich etwas mehr gefunden habe. Aber können Sie bitte auch helfen, eine .json-Datei in Elastic einzufügen? Ich kann jetzt einen einzelnen Testdatensatz in Elastic einfügen, aber ich muss ungefähr 200 .json-Dateien einfügen. Die Codezeile curl -XPOST " localhost: 9200 / pattentdb / pattent / 1 " -@data1.json funktioniert bei mir nicht (data1.json ist meine .json-Datei)

Danke Sabuj Hassan, du hilfst mir so sehr. Übrigens muss ich stattdessen den vollständigen Pfad der Datei verwenden, um nur den Dateinamen mit der Erweiterung zu verwenden (ich denke nur, dass er die Datei im selben Verzeichnis erkennt, aber nicht)

@ Tedder42 können Sie erklären, warum wir "unter Windows verwenden? Warum nur innerhalb von {}?
Haneul Kim

14

Lassen Sie mich das klar erklären. Wenn Sie mit rdbms vertraut sind. Index ist Datenbank. Und Indextyp ist Tabelle. Dies bedeutet, dass Index eine Sammlung von Indextypen ist.

in NOSQL .. Index ist Datenbank und Indextyp ist Sammlungen. Sammlungsgruppe als Datenbank ..

Um diese Abfragen auszuführen ... Sie müssen CURL für Windows installieren.

Curl ist nichts anderes als ein Befehlszeilen-Rest-Tool. Wenn Sie ein grafisches Tool möchten, versuchen Sie es

Sense Plugin für Chrome ...

Ich hoffe es hilft..


Lieber BlackPop, vielen Dank für Ihre Antwort. Ich habe RESTClient gelesen und benutze es jetzt. Ich versuche, nach dem Sense-Plugin für Chrome zu suchen, aber es gibt nur AdSense im Google Appstore. Wie kann ich mit diesem Tool einen Datensatz in Elatic einfügen? Vielen Dank

Sense Plug-In für Made for Elasticsearch. Versuchen Sie Sense Plug-In für Chrome. Es ist nur für Chrome-Browser verfügbar. Probieren Sie es aus
BlackPOP

1
Index hat in Elasticsearch viele verschiedene Bedeutungen. Es ist auch eine Aktion . Wenn Sie ein Dokument indizieren, fügen Sie es zur Indizierung zu Elasticsearch hinzu. Beachten Sie, dass Elasticsearch eine Suchmaschine für die Daten ist, die Sie darin speichern.
Ellesedil

Nur um hinzuzufügen, "Typ" kann mit Tabellen in der relationalen Datenbank verglichen werden, ist jedoch in Elasticsearch oder genauer gesagt in der Lucene-Bibliothek nicht vorhanden. Es scheint, dass der Typ 7 in Version entfernt wurde und der Index direkt mit Lucene abgeglichen worden wäre.
Ashish Dadhore

11

Wenn Sie KIBANA mit elasticsearch verwenden, können Sie die unten stehende RESt-Anforderung verwenden, um den Index zu erstellen und einzufügen.

INDEX ERSTELLEN:

http://localhost:9200/company
PUT company
{
  "settings": {
    "index": {
      "number_of_shards": 1,
      "number_of_replicas": 1
    },
    "analysis": {
      "analyzer": {
        "analyzer-name": {
          "type": "custom",
          "tokenizer": "keyword",
          "filter": "lowercase"
        }
      }
    }
  },
  "mappings": {
    "employee": {
      "properties": {
        "age": {
          "type": "long"
        },
        "experience": {
          "type": "long"
        },
        "name": {
          "type": "text",
          "analyzer": "analyzer-name"
        }
      }
    }
  }
}

DOKUMENT ERSTELLEN:

POST http://localhost:9200/company/employee/2/_create
{
"name": "Hemani",
"age" : 23,
"experienceInYears" : 2
}

7

Um Curl-Anforderungen von Windows zu testen und zu testen, können Sie die Chrome-Erweiterung des Postman-Clients verwenden. Es ist sehr einfach zu bedienen und sehr leistungsfähig.

Oder wie vorgeschlagen können Sie das cURL-Util installieren.

Eine Beispiel-Curl-Anforderung lautet wie folgt.

curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
"user" : "Arun Thundyill Saseendran",
"post_date" : "2009-03-23T12:30:00",
"message" : "trying out Elasticsearch"
}' "http://10.103.102.56:9200/sampleindex/sampletype/"

Ich fange auch mit ES an und erforsche es in großem Umfang. Bitte lassen Sie mich wissen, wenn Sie weitere Zweifel haben.

BEARBEITEN: Der Indexname und der Typname wurden vollständig in Kleinbuchstaben aktualisiert, um Fehler zu vermeiden und die Konvention zu befolgen.


Von diesem Code erhalte ich die Fehlermeldung, dass der Indexname klein geschrieben sein muss. In simpleindex geändert und Aufruf erfolgreich.
Rob

3

Ich habe mit der Verwendung begonnen curl, bin aber seitdem zur Verwendung migriert kibana. Hier finden Sie weitere Informationen zum ELK-Stapel von elastic.co (E elastische Suche, K kibana): https://www.elastic.co/elk-stack

Mit kibana sind Ihre POSTAnfragen etwas einfacher:

POST /<INDEX_NAME>/<TYPE_NAME>
{
    "field": "value",
    "id": 1,
    "account_id": 213,
    "name": "kimchy"
}

1

Um die Verwendung von Curl- oder Chrome-Plugins zu vermeiden, können Sie einfach die integrierte Windows-PowerShell verwenden. Führen Sie im Powershell-Befehlsfenster aus

Invoke-WebRequest -UseBasicParsing "http://127.0.0.1:9200/sampleindex/sampleType/" -
Method POST -ContentType "application/json" -Body '{
"user" : "Test",
"post_date" : "2017/11/13 11:07:00",
"message" : "trying out Elasticsearch"
}'

Beachten Sie, dass der Indexname in Kleinbuchstaben geschrieben sein muss.


-4

Einfache Grundlagen, Elastic Community hat Indizierungs-, Such- und Löschvorgänge als Rest-Webdienst verfügbar gemacht. Sie können elastisch mit Curl oder Sense (Chrome Plugin) oder einem beliebigen Rest-Client wie Postman interagieren.

Wenn Sie nur wenige Befehle testen, würde ich empfehlen, das Sense Chrome Plugin zu verwenden, das jetzt eine einfache Benutzeroberfläche und ein ziemlich ausgereiftes Plugin hat.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.