Einführung in Elasticsearch und grundlegende Operationen ---- HTTP-Protokollmethode

Grundlegende Operationen von Elasticsearch

I. Übersicht

Elasticsearch, bezeichnet als ES, ist eine hochgradig skalierbare Open-Source-Volltextsuchmaschine im RESTful-Stil. Sie kann Daten nahezu in Echtzeit speichern und abrufen. Sie ist gut skalierbar und kann auf Hunderte von Servern erweitert werden. Verarbeitung von Daten auf PB-Ebene.

Die hier erwähnte Volltext-Suchmaschine bezieht sich auf die derzeit weit verbreitete Mainstream-Suchmaschine, deren Arbeitsprinzip darin besteht, dass das Computer-Indexierungsprogramm jedes Wort im Artikel scannt und für jedes Wort einen Index erstellt , der anzeigt, dass das Wort darin vorkommt den Artikel.Wenn der Benutzer abfragt, sucht das Wiedergewinnungsprogramm gemäß dem im Vorausfestgelegten Index und gibt die Suchergebnisse an das Wiedergewinnungsverfahrendes Benutzers zurück. Dieser Vorgang ähnelt dem Vorgang des Nachschlagens von Wörtern über eine Suchwortliste in einem Wörterbuch.

Elasticsearch ist eine dokumentenorientierte Datenbank. Ein Datenelement ist ein Dokument. Der Vergleich zwischen den in Elasticsearch gespeicherten Dokumentdaten und den in MySQL gespeicherten Daten:

Bild-20211212160132708

Hinweis: Das Konzept von Type in Elasticsearch wurde entfernt.

1.1 Vorwärts- und invertierte Indizes

Positiver Index:

MySQL verwendet einen Vorwärtsindex, z. B. das Abfragen des Werts eines entsprechenden Felds in einem Datensatz basierend auf dem Primärschlüsselindex. Wenn jedoch eine Fuzzy-Abfrage (Abfrage eines bestimmten Teils eines bestimmten Felds) nur den vollständigen Feldwert gemäß dem Index finden kann, kann diese Art von Index fehlschlagen.

Invertierter Index:

ES verwendet einen invertierten Index, der Wortsegmentierungen und Zerlegungsoperationen am Artikel durchführt und für jedes Wort einen Index erstellt, zu dem nach einem bestimmten Wort der entsprechende Indexwert abgefragt werden kann und danach der gesamte Artikelinhalt abgefragt werden kann Indexwert. , der der invertierte Index ist.

Zweitens das Installationsprogramm

  • Downloadadresse: Past Releases of Elastic Stack Software | Elastic (Dieser Artikel verwendet das Win-Format der Version 7.8.0)

  • Entpacken Sie das komprimierte Paket, um die folgende Verzeichnisstruktur zu erhalten:

    Bild-20211212155007133
  • Rufen Sie nach der Dekomprimierung das Verzeichnis bin auf und klicken Sie auf die Datei elasticsearch.bat, um den ES-Dienst zu starten:

    Bild-20211212155218890

    Hinweis: Port 9300 ist der Kommunikationsport zwischen Elasticsearch-Clusterkomponenten und Port 9200 ist der RESTful-Port des HTTP-Protokolls, auf den Browser zugreifen.

  • Öffnen Sie den Browser, geben Sie die URL ein: http://localhost:9200/, die folgende Oberfläche erscheint und zeigt an, dass der Start erfolgreich war:

    Bild-20211212155443658
  • Um Anfragen im RESTful-Stil einfach zu verwenden, installieren Sie die Postman-Software, Download-Adresse: https://www.getpostman.com/apps

3. HTTP-Operation

3.1 Indexoperation

3.1.1 Index erstellen

Im Gegensatz zu relationalen Datenbanken entspricht das Erstellen eines Index dem Erstellen einer Datenbank.

PUT - Anforderung zum Erstellen des Index : http://127.0.0.1:9200/索引名称:

Bild-20211212161055391
# 响应结果,true表示成功
"acknowledged": true,  
# 分片操作成功
"shards_acknowledged": true,
# 创建的索引名称
"index": "shopping"

Wenn derselbe Index wiederholt hinzugefügt wird, wird eine Fehlermeldung zurückgegeben:

Bild-20211212161346577

3.1.2 Index anzeigen

Alle Indizes anzeigen:

Alle indizierten GET-  Anfragen anzeigen: http://127.0.0.1:9200/_cat/indices?v:

  • _cat: bedeutet anzeigen
  • Indizes: Zeigt alle Indizes an
  • ?v: Gibt an, dass die Ergebnisse in Form einer Tabelle angezeigt werden
Bild-20211212161922149

Die Details des Antwortergebnisses lauten wie folgt:

Bild-20211212162218127

Einen einzelnen Index anzeigen:

GET - Anforderungen für einen einzelnen Index anzeigen : http://127.0.0.1:9200/索引名:

Bild-20211212162351496

Analyse des Antwortergebnisses:

# 索引名
shopping
# 别名
aliases
# 映射
mappings
# 设置
settings
# 设置-索引
settings-index
# 设置-索引-创建时间
settings-index-creation_date
# 设置-索引-主分片数量
settings-index-number_of_shards
# 设置-索引-副分片数量
settings-index-number_of_replicas
# 设置-索引-唯一标识
settings-index-uuid
# 设置-索引-版本
settings-index-version
# 设置-索引-名称
settings-index-provided_name

3.1.3 Index löschen

DELETE Anfrage zum Löschen eines Indexes: http://127.0.0.1:9200/索引名:

Bild-20211212163738753

Beim erneuten Zugriff auf den Index existiert der Antwortindex nicht:

Bild-20211212163956886

3.2 Dokumentoperationen

3.2.1 Dokumente erstellen

ID-Werte zufällig generieren:

Das Erstellen eines Dokuments entspricht dem Erstellen eines Datensatzes einer Tabelle im JSON-Format.

Die POST- Anforderung zum Erstellen des Dokuments lautet: http://127.0.0.1:9200/索引名/_doc + JSON格式请求体:

  • _doc: Gibt das Dokument an:
Bild-20211212171517434

Hinweis: Da die PUT-Operation idempotent ist, überschreibt die letztere die vorherige, wenn dieselbe Anfrage mehrmals ausgegeben wird, und der vom erstellten Dokument zurückgegebene _id-Wert ist unterschiedlich, sodass er mit POST und PUT erstellt werden muss wird im Allgemeinen für Change-Ressourcen verwendet.

Generieren Sie einen festen ID-Wert:

Die POST- Anforderung zum Erstellen des Dokuments lautet: http://127.0.0.1:9200/索引名/_doc/id值 + JSON格式请求体:

Bild-20211212171642630

Hinweis: Wenn der Wert des Datenprimärschlüssels (id) angegeben wird, wenn das Dokument erstellt wird, kann die Anforderungsmethode auch PUT verwenden.

3.2.2 Dokumentation anzeigen

Beim Anzeigen eines Dokuments müssen Sie die eindeutige ID des Dokuments angeben, ähnlich wie bei der Primärschlüsselabfrage von MySQL.

GET-Anforderungen zum Abfragen von Dokumenten: http://127.0.0.1:9200/索引名/_doc/文档主键值:

Bild-20211212172240931

3.2.3 Ändern Sie das Dokument

Ändern Sie das gesamte Dokument

Eine POST-Anforderung, die das gesamte Dokument ändert: http://127.0.0.1:9200/索引名/_doc/文档主键值 + JSON请求体:

Bild-20211212180635009

Dokumentabschnittsfelder ändern

POST-Anforderung zum Ändern der Felder des Dokumentenabschnitts: http://127.0.0.1:9200/索引值/_update/文档主键值 + JSON格式请求体:

Bild-20211212180929860

3.2.4 Dokumente löschen

Das Löschen eines Dokuments löscht es nicht sofort von der Festplatte, es wird einfach als gelöscht markiert (Tombstone).

DELETE Anfrage zum Löschen eines Dokuments: http://127.0.0.1:9200/索引值/_doc/文档主键值:

Bild-20211212181350543

3.3 Mehrere Abfragemethoden

3.3.1 Bedingte Abfrage

Nachdem Sie alle Ergebnisse abgefragt haben, filtern Sie sie, um nur Dokumente anzuzeigen, die mit dem angegebenen Feldwert übereinstimmen.

Methode eins:

Senden Sie eine GET-Anfrage:http://127.0.0.1:9200/索引值/_search?q=字段名:字段值

Bild-20211218150230289

Methode zwei:

Senden Sie eine GET-Anfrage:http://127.0.0.1:9200/索引值/_search + JSON格式请求体

Bild-20211218150710344

3.3.2 Vollständige Abfrage

Alle Dokumente unter einem Index abfragen.

Methode eins:

Senden Sie eine GET-Anfrage:http://127.0.0.1:9200/索引名/_search

Methode zwei:

Senden Sie eine GET-Anfrage:http://127.0.0.1:9200/索引名/_search + JSON格式请求体

Bild-20211218151334012

3.3.3 Paging-Abfrage

Abfrageergebnisse paginieren.

Bild-20211218152149379

Paginierte Ergebnisse:

{
    
    
    "took": 2,
    "timed_out": false,
    "_shards": {
    
    
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
    
    
        "total": {
    
    
            "value": 3,
            "relation": "eq"
        },
        "max_score": null,
        "hits": [
            {
    
    
                "_index": "shopping",
                "_type": "_doc",
                "_id": "86XdrX0BhPod2Sb5T3VE",
                "_score": null,
                "_source": {
    
    
                    // 仅指定的title字段被显示出来
                    "title": "小米手机" 
                },
                "sort": [
                    3999.0
                ]
            },
            {
    
    
                "_index": "shopping",
                "_type": "_doc",
                "_id": "XndgzH0BZ5WKFcQMlsuM",
                "_score": null,
                "_source": {
    
    
                    "title": "华为手机"
                },
                "sort": [
                    2503.36
                ]
            }
        ]
    }
}

3.3.4 Abfrage mit mehreren Bedingungen

Fall 1: Und die Bedingung

Bild-20211218164609947

Fall 2: ODER-Bedingung

Bild-20211218164751240

3.3.5 Bereichsabfrage

Bild-20211218165131531

Notiz:

Bild-20211218165527292

3.3.6 Volltextsuche

Fall 1:

Manchmal wird beim Abfragen nicht der komplette Wert des Eingabefeldes eingetragen, sondern es kann auch das Ergebnis abgefragt werden, zum Beispiel:

Bild-20211218170123547

Grund: Beim Speichern eines Dokuments führt ES Wortsegmentierungen und Zerlegungsoperationen am Datentext durch und speichert die Zerlegungsergebnisse im invertierten Index, sodass auch bei Verwendung eines Teils des Textes die entsprechenden Ergebnisse abgefragt werden können.

Fall zwei:

Geben Sie die Kombinationsstruktur verschiedener Feldwerte in den beiden Dokumenten ein. Der Wert selbst ist in den Feldern eines Dokuments nicht vorhanden, aber es werden alle beiden Dokumente abgefragt. wie folgt:

Bild-20211218170748748

Der Grund für das Erscheinen: ES führt auch Wortsegmentierungs- und Zerlegungsoperationen an den Abfragebedingungen durch und teilt sie in zwei Teile: „klein“ und „hua.“ Die beiden Wörter entsprechen Fall 1 (passend zum invertierten Index), also Die beiden Dokumente werden in zwei Teile geteilt.Alle abgefragt.

3.3.7 Genaue Übereinstimmung

Wenn Sie in der Volltextsuche keine teilweise Übereinstimmung haben möchten, sondern den Abfragewert vollständig übereinstimmen möchten, müssen Sie das Schlüsselwort verwenden match_phrase:

Bild-20211218171157151

3.3.8 Aggregierte Abfrage

Die Abfrageergebnisse können gruppiert, gemittelt und maximiert werden.

Beispiel einer Gruppierungsoperation:

Bild-20211218173206701

Suchergebnis:

"aggregations": {
    
    
    //自定义分组结果名称
    "price_group": {
    
    
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": [
            //表示价格为2503.3的文档个数为2个
            {
    
    
                "key": 2503.3,
                "doc_count": 2
            },
            //表示价格为3999.0的文档个数为1个
            {
    
    
                "key": 3999.0,
                "doc_count": 1
            }
        ]
    }
}

Beispiel für Mittelwertbildung:

Anfragetext:

{
    
    
    //agg表示聚合操作
    "aggs" : {
    
    
        //自定义名称,作为结果的名称
        "price_avg" : {
    
    
            //avg表示求平均值操作
            "avg" : {
    
    
                //表示对所有文档的price字段求平均值
                "field" : "price"
            }
        }
    },
    //仅显示平均值结果,而不显示所有的文档具体内容
    "size" : 0
}

Suchergebnis:

{
    
    
    "took": 2,
    "timed_out": false,
    "_shards": {
    
    
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
    
    
        "total": {
    
    
            "value": 3,
            "relation": "eq"
        },
        "max_score": null,
        //不显示具体的文档内容,如果不使用size=0,则这里会显示所有的文档具体内容
        "hits": []
    },
    "aggregations": {
    
    
        //自定义名称
        "price_avg": {
    
    
            //平均值结果
            "value": 3001.90673828125
        }
    }
}

3.3.9 Abbildungsbeziehung

Der Texttyp kann einen teilweisen Abgleich für die Volltextsuche durchführen, während der KV-Typ nur einen vollständigen Abgleich durchführen kann.

1. Erstellen Sie den Benutzerindex

http://127.0.0.1:9200/user

2. Definieren Sie den Zuordnungstyp des Felds

Anfrage geschickt:

Bild-20211218175510073

Übermittlungsanforderungstext:

{
    
    
    //设置映射关系
    "properties" : {
    
    
        //name字段的类型是文本,而且此字段可以使用索引
        "name" : {
    
    
            "type" : "text",
            "index" : true
        },
        //sex字段的类型是K-V,而且此字段可以使用索引
        "sex" : {
    
    
            "type" : "keyword",
            "index" : true
        },
        //sex字段的类型是K-V,而且此字段不能使用索引
        "tel" : {
    
    
            "type" : "keyword",
            "index" : false
        }
    }
}

3. Dokumentation erstellen

Bild-20211218180422812

4. Feldwert abfragen

Fall 1:

Bild-20211218180103265

Fall zwei:

Bild-20211218180314919

Fall drei:

Bild-20211218180520268

Ich denke du magst

Origin blog.csdn.net/weixin_49343190/article/details/122015364
Empfohlen
Rangfolge