1. Grundlegende Konzepte
Elasticsearch ist auch eine auf Lucene basierende Volltextsuchbibliothek, deren Kern darin besteht, Daten zu speichern.Viele Konzepte ähneln MySQL.
Vergleichsbeziehung:
Index (Indizes) ---------------------Datenbanken Datenbanktyp
(Typ) ------------------ - -------Tabellendatentabelle [7.x veraltet]
Dokument (Dokument)----------------------Zeile Zeilenfeld
(Feld)- - -----------------------Spalte Spalten
Beachten Sie, dass Elasticsearch selbst verteilt ist, sodass Elasticsearch standardmäßig Fragmentierungs- und Kopiervorgänge an Ihren Daten durchführt, selbst wenn Sie nur einen Knoten haben.Wenn Sie dem Cluster neue Daten hinzufügen, befinden sich die Daten auch im neu hinzugefügten Knoten sind ausgeglichen.
2. Indexoperation
1. Abfrageindex
Überprüfen Sie, welche Indexbibliotheken in es verfügbar sind (ähnlich wie bei mysql database) : GET /_cat/indices?v
# es默认对中文的分词 支持不友好,它认为一个字代表一个词
# 查看es的分词方式
GET _analyze
{
"text": ["我是中国人"]
}
{
"text": "我爱你你爱我"
}
# 给es配置中文分词器:ik分词器
# 指定ik分词器分词:ik_smart粗粒度分词
# ik_max_word细粒度分词
GET _analyze
{
"text": "咖喱人,鸡你太美,你这个老六",
"analyzer": "ik_max_word"
}
Es gibt standardmäßig einen Index namens .kibana und .kibana_task_manager in es
Feldname | Bedeutung |
---|---|
Gesundheit | grün (Cluster komplett) gelb (Einzelpunkt normal, Cluster unvollständig) rot (einzelner Punkt ist nicht normal) |
Status | Kann es verwendet werden |
Index | Indexname |
uuid | Index einheitliche Nummer |
bei | wie viele masternodes |
rep | Wie viele Slave-Knoten |
docs.count | Anzahl Dokumente |
docs.gelöscht | Wie viele Dokumente wurden gelöscht |
store.size | Gesamtabdruck |
pri.store.size | Der Master-Knoten berücksichtigt |
2. Erstellen Sie einen Index
PUT /indexname
Optionale Parameter: Geben Sie den Shard und die Kopie an, der Standard-Shard ist 3 und die Kopie 2.
PUT /liush
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 3
}
}
3. Zeigen Sie die spezifischen Informationen des Index an
GET /indexname
4. Löschen Sie den Index
DELETE /index Bibliotheksname
3. Mapping-Konfiguration (_mapping)
Mit dem Index besteht der nächste Schritt darin, Daten hinzuzufügen. Die Zuordnung muss jedoch definiert werden, bevor Daten hinzugefügt werden können.
Was ist eine Kartierung?
Mapping ist der Prozess der Definition eines Dokuments, welche Felder das Dokument enthält, ob diese Felder gespeichert, indiziert, wortsegmentiert usw. sind.
Erst wenn die Konfiguration klar ist, hilft uns Elasticsearch beim Erstellen der Indexbibliothek (nicht unbedingt).
1. Erstellen Sie ein Zuordnungsfeld
PUT /index Bibliotheksname/_mapping
{ "properties": { "field name": { "type": "type", "index": true, "store": true, "analyzer": "word Breaker" } } }
Feldname: Ähnlich wie beim Spaltennamen können viele Felder unter Eigenschaften angegeben werden.
Jedes Feld kann viele Attribute haben. Zum Beispiel:
type:类型,String(Textschlüsselwort) Numeric(Long Integer Float Double) date boolean
index: ob indexiert werden soll, die Voreinstellung ist true
store: Ob gespeichert werden soll, der Standardwert ist false, selbst wenn es false ist, wird es in _source gespeichert, wenn es true ist, wird eine zusätzliche Kopie gespeichert
Analysator: Worttrennung, verwenden Sie hier ik Worttrennung: oder
ik_max_word
ik_smart
PUT /liush
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 3
}
}
POST /liush/_mapping
{
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"images":{
"type": "keyword",
"index": "false"
},
"price": {
"type": "long"
}
}
}
2. Zeigen Sie die Zuordnungsbeziehung an
Syntax: GET /index Bibliotheksname/_mapping
4. Neues Dokument (Dokument)
Mit Indizes, Typen und Zuordnungen können Sie Dokumente hinzufügen, löschen, ändern und abfragen.
1. Grundlegendes Gameplay
Wenn wir die ID angeben möchten, wenn wir sie selbst hinzufügen, können wir Folgendes tun:
POST /index Bibliotheksname/_doc/id Wert
{ ... }
POST /liush/_doc/1
{
"title": "小米手机",
"images": "http://xiaomi.com/xiaomi.igp",
"price":2999
}
GET /liush/_search
2. Intelligentes Urteilsvermögen
Tatsächlich ist Elasticsearch sehr intelligent: Sie müssen keine Zuordnungen für die Indexbibliothek festlegen, es kann auch den Typ anhand der von Ihnen eingegebenen Daten beurteilen und Datenzuordnungen dynamisch hinzufügen.
POST /liush/_doc/2
{
"title":"小米手机",
"images":"http://image.jd.com/12479122.jpg",
"price":2899,
"stock": 200,
"saleable":true,
"attr": {
"category": "手机",
"brand": "小米"
}
}
Wir haben zusätzlich mehrere Felder des Lagerbestands hinzugefügt, ob sich das verkaufsfähige Produkt in den Regalen befindet, und andere attr-Attribute.
stock, saleable und attr wurden alle erfolgreich zugeordnet.
Wenn es sich um Daten vom Typ Zeichenfolge handelt, werden zwei Typen hinzugefügt: Text + Schlüsselwort. Wie im obigen Beispiel Kategorie und Marke
5. Daten löschen
Das Löschen verwendet die DELETE-Anforderung. Ebenso muss es gemäß der ID gelöscht werden:
Syntax: DELETE /index Bibliotheksname/_doc/id Wert
Beispiel: DELETE /liush/_doc/2
6. Dokumente aktualisieren
Syntax:
POST /index Bibliotheksname/_update/id Wert
{ doc:{ "attribute":"value" } }
POST /liush/_update/1
{
"doc": {
"title":"aaa"
}
}