Zoeken…


parameters

Parameter Details
hosts Reeks systemen in de vorm van object met toetsen host en port . Standaard host is 'localhost' en port is 9200. Een monster binnenkomst ziet eruit als [{"host": "ip of es server", "port": 9200}]
sniff_on_start Boolean als u wilt dat de client knopen bij het opstarten snuift, betekent snuiven een lijst met knopen in het elastische-zoekcluster
sniff_on_connection_fail Boolean voor het activeren van snuiven als de verbinding mislukt wanneer de client actief is
sniffer_timeout tijdsverschil in seconden tussen elke snuif
sniff_timeout tijd voor een enkel verzoek om in seconden te snuffelen
retry_on_timeout Booelan voor als client time-out triggert die contact maakt met een ander elastisch zoekknooppunt of gewoon een foutmelding geeft
http_auth Basis http-authenticatie kan hier worden verstrekt in de vorm van username:password

Een document indexeren (bijvoorbeeld een voorbeeld toevoegen)

Installeer de benodigde Python-bibliotheek via:

$ pip install elasticsearch

Maak verbinding met Elasticsearch, maak een document (bijvoorbeeld gegevensinvoer) en "indexeer" het document met 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"])

Verbinding met een cluster

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

Een lege index maken en de toewijzing instellen

In dit voorbeeld maken we een lege index (we indexeren er geen documenten in) door de toewijzing ervan te definiëren.

Eerst maken we een ElasticSearch instantie en definiëren we vervolgens de toewijzing van onze keuze. Vervolgens controleren we of de index bestaat en zo niet, maken we deze door de index en body parameters op te geven die respectievelijk de indexnaam en de body van de mapping bevatten.

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))

Gedeeltelijke update en update per query

Gedeeltelijke Update: Gebruikt wanneer een gedeeltelijke-update document is gedaan moest worden, dat wil zeggen in het volgende voorbeeld het veld name van het document met id doc_id zal worden bijgewerkt met 'John'. Merk op dat als het veld ontbreekt, het alleen aan het document wordt toegevoegd.

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

Update door te query: Wordt gebruikt wanneer nodig is om documenten bij te werken dat een voorwaarde, dat wil zeggen in het volgende voorbeeld voldoen we een update van de leeftijd van de documenten waarvan de name veld wedstrijden '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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow