"Erste elastische Suche" beginnend mit einem Python-Client

Überblick

Dies ist ein Memo, das die Versuche von der Installation von Elasticsearch bis lange vor dem Betrieb zusammenfasst. Der Client verwendet den Python-Client. Auf diese Weise können Sie Daten mit Python hinzufügen und durchsuchen, um die Verarbeitung der Daten zu vereinfachen.

Umgebungseinstellung

Installieren Sie Elasticsearch

Da die Umgebung debian war, bringen Sie das deb-Paket und installieren Sie es.

% wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.1.deb
% sudo dpkg -i elasticsearch-1.3.1.deb

Fügen Sie den Speicherort von JAVA_HOME in Ihrer Umgebung zu dem Verzeichnis hinzu, in dem Sie nach Java in /etc/init.d/elasticsearch suchen (hinzugefügt / usr / loca / java).

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not defined in $DEFAULT)
JDK_DIRS="/usr/local/java /usr/lib/jvm/java-7-oracle /usr/lib/jvm/java-7-openjdk /usr/lib/jvm/java-7-openjdk-amd64/ /usr/lib/jvm/java-7-openjdk-armhf /usr/lib/jvm/java-7-openjdk-i386/ /usr/lib/jvm/default-java"

Anlaufen

Anlaufen


% sudo /etc/init.d/elasticsearch start

Bestätigung

Versuchen Sie, auf "http: // localhost: 9200" zuzugreifen, und bestätigen Sie, dass Folgendes zurückgegeben wird. Greifen Sie über einen Browser auf die Adresse zu, um sie zu überprüfen, oder greifen Sie über die Befehlszeile darauf zu, wie unten gezeigt.

% curl -XGET http://localhost:9200/                                                       

Antwort


{
  "status" : 200,
  "name" : "White Rabbit",
  "version" : {
    "number" : "1.3.1",
    "build_hash" : "2de6dc5268c32fb49b205233c138d93aaf772015",
    "build_timestamp" : "2014-07-28T14:45:15Z",
    "build_snapshot" : false,
    "lucene_version" : "4.9"
  },
  "tagline" : "You Know, for Search"
}

Versuchen Sie es mit dem Plugin

Plugin installieren

Da es unpraktisch ist, wenn nichts vorhanden ist, ist der Standard elasticsearch-head enthalten. Dies reicht für das Minimum. Zum Installieren drücken Sie einfach den Plugin-Befehl, der mit elasticsearch geliefert wird. Nett!

Wenn Sie auf http: // localhost: 9200 / _plugin / head zugreifen können, sind Sie erfolgreich.

Installation


% /usr/share/elasticsearch/bin/plugin -install mobz/elasticsearch-head

Der Bildschirm sieht so aus. elasticsearch-head.png

Verwenden Sie den Python-Client

Offiziell: elasticsearch-py Dokumentation: Python Elasticsearch Client

Bereiten Sie die Python-Umgebung vor

Ich habe Python 2.6.6 auf meinem Computer. Da ich Python noch nie verwendet habe, habe ich mich entschlossen, einen Pip für die Paketverwaltung und eine virtuelle Umgebung zum Wechseln der Umgebung einzubauen, indem ich auf die gegoogelte Seite verwies.

Referenz: Die Pip-Installation wurde einfacher, bevor ich es wusste

Zitiert aus "Ohne es zu wissen wurde es einfacher, pip zu installieren"


curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
pip install virtualenv virtualenvwrapper
vi ~/.bashrc
#Fügen Sie die folgenden 3 Zeilen hinzu
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/work
source /path/to/your/virtualenvwrapper.sh

Installieren Sie den Python-Client und starten Sie ihn interaktiv

Installation

Installation


pip install elasticsearch

Anlaufen

Anlaufen


% LANG=ja_JP.UTF8 python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from elasticsearch import Elasticsearch
>>> es = Elasticsearch("localhost:9200")
>>> es
<Elasticsearch([{'host': 'localhost', 'port': 9200}])>

Fügen Sie dem Index ein Dokument hinzu

API:elasticsearch.Elasticsearch.index

Fügen Sie die folgenden Daten hinzu. index und doc_type sind erforderliche Elemente. Wenn der angegebene Index nicht vorhanden ist, wird ein neuer Index erstellt. Wenn Sie die ID nicht angeben, wird sie entsprechend nummeriert.

hinzufügen


>>> es.index(index="fruit", doc_type="test", id=1, body={"name":"apple", "color":"red"})
{u'_type': u'test', u'_id': u'1', u'created': True, u'_version': 1, u'_index': u'fruit'}

Wie der Index erstellt wurde elasticsearch-head-new-index.png

Dokumentation hinzugefügt elasticsearch-new-index.png

Probieren Sie verschiedene Operationen aus

Ändern / Hinzufügen

Überschreiben, wenn dieselbe ID angegeben ist.

Überschreiben


>>> es.index(index="fruit", doc_type="test", id=1, body={"name":"apple", "color":"green"})
{u'_type': u'test', u'_id': u'1', u'created': False, u'_version': 2, u'_index': u'fruit'}

Wenn keine ID angegeben wird, werden die Nummern entsprechend zugewiesen. Im Folgenden ist id = dnMiX8ufSiiZC_c8KwykuQ.

Wenn id nicht angegeben ist


>>> es.index(index="fruit", doc_type="test", body={"name":"Apfel", "color":"red"})
{u'_type': u'test', u'_id': u'dnMiX8ufSiiZC_c8KwykuQ', u'created': True, u'_version': 1, u'_index': u'fruit'}

Daten bekommen

Annahme

Die folgenden Daten sind im Index Frucht aufgeführt. Der Dokumenttyp ist auf Test eingestellt.

id name color
9qsreGQTTMSIsMzlEe0H0A Apfel red
3MH8LiCNSkOgZMwx_kNebw apple red
YXAo8TfrQbeF3JQpW6dakw banana yellow
mz1wlxRUSSWvCuIIh6k4OQ orange orange
MBEGluC5S-OzNdGoDYavGg apple green

Wenn id angegeben werden kann

Der durch id angegebene Rückgabewert ist apple,Erwarten Sie grün


>>> res = es.get(index="fruit", doc_type="_all", id="MBEGluC5S-OzNdGoDYavGg")
>>> print json.dumps(res, indent=4)
{
    "_type": "test",
    "_source": {
        "color": "green",
        "name": "apple"
    },
    "_index": "fruit",
    "_version": 1,
    "found": true,
    "_id": "MBEGluC5S-OzNdGoDYavGg"
}

Wenn Sie in einer Abfrage angeben möchten

Bring sie alle mit

>>> res = es.search(index="fruit", body={"query": {"match_all": {}}})
>>> print json.dumps(res, indent=4)
{
    "hits": {
        "hits": [
            {
                "_score": 1.0,
                "_type": "test",
                "_id": "3MH8LiCNSkOgZMwx_kNebw",
                "_source": {
                    "color": "red",
                    "name": "apple"
                },
                "_index": "fruit"
            },
            {
                "_score": 1.0,
                "_type": "test",
                "_id": "mz1wlxRUSSWvCuIIh6k4OQ",
                "_source": {
                    "color": "orange",
                    "name": "orange"
                },
                "_index": "fruit"
            },
            {
                "_score": 1.0,
                "_type": "test",
                "_id": "9qsreGQTTMSIsMzlEe0H0A",
                "_source": {
                    "color": "red",
                    "name": "\u308a\u3093\u3054"
                },
                "_index": "fruit"
            },
            {
                "_score": 1.0,
                "_type": "test",
                "_id": "MBEGluC5S-OzNdGoDYavGg",
                "_source": {
                    "color": "green",
                    "name": "apple"
                },
                "_index": "fruit"
            },
            {
                "_score": 1.0,
                "_type": "test",
                "_id": "YXAo8TfrQbeF3JQpW6dakw",
                "_source": {
                    "color": "yellow",
                    "name": "banana"
                },
                "_index": "fruit"
            }
        ],
        "total": 5,
        "max_score": 1.0
    },
    "_shards": {
        "successful": 5,
        "failed": 0,
        "total": 5
    },
    "took": 3,
    "timed_out": false
}

Suche mit Bedingungen

Versuchen Sie, nach einem mit Farbe = Rot zu suchen.

>>> res = es.search(index="fruit", body={"query": {"match": {"color":"red"}}})
>>> print json.dumps(res, indent=2 , ensure_ascii=False)
{
  "hits": {
    "hits": [
      {
        "_score": 0.30685282000000003,
        "_type": "test",
        "_id": "3MH8LiCNSkOgZMwx_kNebw",
        "_source": {
          "color": "red",
          "name": "apple"
        },
        "_index": "fruit"
      },
      {
        "_score": 0.30685282000000003,
        "_type": "test",
        "_id": "9qsreGQTTMSIsMzlEe0H0A",
        "_source": {
          "color": "red",
          "name": "Apfel"
        },
        "_index": "fruit"
      }
    ],
    "total": 2,
    "max_score": 0.30685282000000003
  },
  "_shards": {
    "successful": 5,
    "failed": 0,
    "total": 5
  },
  "took": 2,
  "timed_out": false
}

Index löschen

Der Fruchtindex verschwindet sauber.

>>> es.indices.delete(index="fruit")
{u'acknowledged': True}

Recommended Posts

"Erste elastische Suche" beginnend mit einem Python-Client
Python ab Windows 7
GRPC beginnend mit Python
Verbessertes Lernen ab Python
Erste Nervenzellsimulation mit NEURON + Python
Machen Sie eine Lotterie mit Python
Erstellen Sie ein Verzeichnis mit Python
Python beginnend mit Hallo Welt!
Lassen Sie uns mit Python einen Web-Socket-Client erstellen. (Zugriffstoken-Authentifizierung)
[Python] Was ist eine with-Anweisung?
Löse ABC163 A ~ C mit Python
Python-Grafikhandbuch mit Matplotlib.
Lassen Sie uns eine GUI mit Python erstellen.
Web Scraping mit Python Erster Schritt
Erstellen Sie eine virtuelle Umgebung mit Python!
Ich habe mit Python eine Lotterie gemacht.
[GUI mit Python] PyQt5-Der erste Schritt-
Erstellen einer virtuellen Umgebung mit Python 3
Löse ABC168 A ~ C mit Python
Erstellen Sie ein Empfehlungssystem mit Python
[Python] Generiere ein Passwort mit Slackbot
Löse ABC162 A ~ C mit Python
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
[Python] Erbt eine Klasse mit Klassenvariablen
Ich habe mit Python einen Daemon erstellt
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Schreiben Sie ein Batch-Skript mit Python3.5 ~
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
Systemhandel ab Python3: langfristige Investition
Generieren Sie eine erstklassige Sammlung in Python
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen einer einfachen Power-Datei mit Python
Ein einfacher HTTP-Client, der in Python implementiert ist
Installieren Sie Python als Framework mit pyenv
Einfacher Slack API-Client mit Python
Erstellen Sie mit Python + PIL ein Dummy-Image.
Ich habe mit Python einen Zeichenzähler erstellt
[Python] Zeichnen eines Wirbelmusters mit einer Schildkröte
"Systemhandel beginnt mit Python3" Lesememo
Ich habe eine Heatmap mit Seaborn [Python] gezeichnet.
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
Kartenmietinformationen auf einer Karte mit Python
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Geschäftseffizienz von Grund auf mit Python
Dämonisieren Sie eine Python-Webanwendung mit Supervisor
Lassen Sie uns mit Python langsam sprechen
Erstellt eine Reise von Darts mit Python (Nachrichten)
Ich habe eine funktionale Sprache mit Python ausprobiert
[Python] Eine schnelle Webanwendung mit Bottle!