Suche…


Parameter

Parameter Einzelheiten
Gastgeber Array von Hosts in Form eines Objekts, das die Schlüssel host und port . Standard - host ist 'localhost' und port ist 9200. Ein Beispiel - Eintrag sieht aus wie [{"host": "ip of es server", "port": 9200}] - [{"host": "ip of es server", "port": 9200}]
sniff_on_start Boolean Wenn der Client beim Start Knoten ausloten soll, bedeutet "Sniffing" eine Liste der Knoten im Elasticsearch-Cluster
sniff_on_connection_fail Boolean zum Auslösen von Sniffing, wenn die Verbindung bei aktivem Client fehlschlägt
sniffer_timeout Zeitunterschied in Sekunden zwischen jedem Sniff
sniff_timeout Zeit für eine einzige Aufforderung zum Schnüffeln in Sekunden
retry_on_timeout Booelan für den Fall, dass der Client ein Timeout auslösen sollte, wenn er einen anderen Elasticsearch-Knoten kontaktiert, oder einfach einen Fehler auslöst
http_auth Die http-Basisauthentifizierung kann hier in Form von username:password bereitgestellt werden

Dokumentieren eines Dokuments (z. B. Hinzufügen einer Probe)

Installieren Sie die erforderliche Python-Bibliothek über:

$ pip install elasticsearch

Stellen Sie eine Verbindung zu Elasticsearch her, erstellen Sie ein Dokument (z. B. Dateneingabe) und "indexieren" Sie das Dokument mithilfe von Elasticsearch.

from datetime import datetime
from elasticsearch import Elasticsearch

# Connect to Elasticsearch using default options (localhost:9200)
es = Elasticsearch()

# Define a simple Dictionary object that we'll index to make a document in ES
doc = {
    'author': 'kimchy',
    'text': 'Elasticsearch: cool. bonsai cool.',
    'timestamp': datetime.now(),
}

# Write a document
res = es.index(index="test-index", doc_type='tweet', id=1, body=doc)
print(res['created'])

# Fetch the document
res = es.get(index="test-index", doc_type='tweet', id=1)
print(res['_source'])

# Refresh the specified index (or indices) to guarantee that the document
#  is searchable (avoid race conditions with near realtime search)
es.indices.refresh(index="test-index")

# Search for the document
res = es.search(index="test-index", body={"query": {"match_all": {}}})
print("Got %d Hits:" % res['hits']['total'])

# Show each "hit" or search response (max of 10 by default)
for hit in res['hits']['hits']:
    print("%(timestamp)s %(author)s: %(text)s" % hit["_source"])

Verbindung zu einem Cluster

es = Elasticsearch(hosts=hosts, sniff_on_start=True, sniff_on_connection_fail=True, sniffer_timeout=60, sniff_timeout=10, retry_on_timeout=True)

Einen leeren Index erstellen und das Mapping festlegen

In diesem Beispiel erstellen wir einen leeren Index (wir indizieren keine Dokumente darin), indem wir seine Zuordnung definieren.

Zuerst erstellen wir eine ElasticSearch Instanz und definieren dann das Mapping unserer Wahl. Als Nächstes prüfen wir, ob der Index vorhanden ist. Wenn dies nicht der Fall ist, erstellen Sie ihn, indem Sie die index und body Parameter angeben, die den Indexnamen bzw. den Body der Zuordnung enthalten.

from elasticsearch import Elasticsearch

# create an ElasticSearch instance
es = Elasticsearch()
# name the index
index_name = "my_index"
# define the mapping
mapping = {
    "mappings": {
        "my_type": {
                "properties": {
                    "foo": {'type': 'text'},
                    "bar": {'type': 'keyword'}
                }
            }
        }
    }
    
# create an empty index with the defined mapping - no documents added
if not es.indices.exists(index_name):
    res = es.indices.create(
        index=index_name,
        body=mapping
    )
    # check the response of the request
    print(res)
    # check the result of the mapping on the index
    print(es.indices.get_mapping(index_name))

Partielle Aktualisierung und Aktualisierung per Abfrage

Partial Update: Wird verwendet , wenn ein Teildokumenten Aktualisierung erforderlich ist, dh in dem folgenden Beispiel das Feld zu tun , name des Dokuments mit der ID doc_id zu ‚John‘ aktualisiert werden soll. Wenn das Feld fehlt, wird es einfach zum Dokument hinzugefügt.

doc = {
    "doc": {
        "name": "John"
    }
}
es.update(index='index_name',
          doc_type='doc_name',
          id='doc_id',
          body=doc)

Update durch Abfrage: Wird verwendet , wenn benötigt wird , um Dokumente zu aktualisieren , die einen Zustand, dh im folgenden Beispiel erfüllen aktualisieren wir das Alter der Dokumente , deren name Feld Streichhölzer ‚John‘.

q = {
  "script": {
    "inline": "ctx._source.age=23",
    "lang": "painless"
  },
  "query": {
    "match": {
        "name": "John"
    }
  }
}

es.update_by_query(body=q, 
                   doc_type='doc_name', 
                   index='index_name')


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