Sobes.tech
Middle

Jak Elasticsearch był zasilany i aktualizowany?

sobes.tech AI

Odpowiedź od AI

Elasticsearch jest wypełniany i aktualizowany za pomocą operacji indeksowania i aktualizacji dokumentów. Zazwyczaj dane są wysyłane do Elasticsearch w formacie JSON przez API REST lub biblioteki klienckie.

Do wypełniania (indeksowania) używa się metody index lub bulk do ładowania wsadowego. Do aktualizacji można użyć metody update, która pozwala na częściową zmianę dokumentu lub ponowne indeksowanie całego dokumentu.

Przykład w Go z użyciem oficjalnego klienta elasticsearch-go:

import (
    "context"
    "encoding/json"
    "fmt"
    "strings"
    "github.com/elastic/go-elasticsearch/v8"
)

type Document struct {
    Title string `json:"title"`
    Content string `json:"content"`
}

func main() {
    es, _ := elasticsearch.NewDefaultClient()

    doc := Document{Title: "Przykład", Content: "Tekst dokumentu"}
    data, _ := json.Marshal(doc)

    // Indeksowanie dokumentu
    res, err := es.Index(
        "my-index",
        strings.NewReader(string(data)),
        es.Index.WithDocumentID("1"),
        es.Index.WithRefresh("true"),
    )
    if err != nil {
        fmt.Println("Błąd indeksowania:", err)
    }
    defer res.Body.Close()

    // Częściowa aktualizacja dokumentu
    updateScript := `{"doc": {"content": "Zaktualizowany tekst"}}`
    res, err = es.Update(
        "my-index",
        "1",
        strings.NewReader(updateScript),
        es.Update.WithRefresh("true"),
    )
    if err != nil {
        fmt.Println("Błąd aktualizacji:", err)
    }
    defer res.Body.Close()
}

W ten sposób, wypełnianie i aktualizacja odbywa się poprzez indeksowanie nowych dokumentów i aktualizację istniejących za pomocą API Elasticsearch.