[1] Elasticsearch – Instalacja
29 marca 2022Zainstaluj wyszukiwarkę pełnotekstową [Elasticsearch].
[1] Zainstaluj i uruchom Elasticsearch.
Instalacja Java nie jest już wymagana, ponieważ zintegrowana Java jest zawarta w Elasticsearch.
[root@vlsr01 ~]# cat > /etc/yum.repos.d/elasticsearch.repo <<EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF [root@vlsr01 ~]# dnf install elasticsearch [root@vlsr01 ~]# systemctl enable --now elasticsearch # sprawdź status [root@vlsr01 ~]# curl http://127.0.0.1:9200 { "name" : "vlsr01.zicher.lab", "cluster_name" : "elasticsearch", "cluster_uuid" : "zZf_1nHnQl2GaZnAgpO-2Q", "version" : { "number" : "7.17.1", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a", "build_date" : "2022-02-23T22:20:54.153567231Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
[2] Jeśli używasz Elasticsearch z innych hostów, zapoznaj się z ustawieniem dla klastrowania.
Musisz skonfigurować te same ustawienia z klastrowaniem, nawet jeśli pojedynczy węzeł jest używany w przypadku odbierania żądań od innych hostów.
[3] To jest podstawowe zastosowanie Elasticsearch. Najpierw utwórz indeks, to jest jak baza danych w RDB.
# pokaż listę indeksów ([pretty] ma pokazać JSON w języku zrozumiałym dla człowieka) [root@vlsr01 ~]# curl http://127.0.0.1:9200/_aliases?pretty { } # stwórz Index [root@vlsr01 ~]# curl -X PUT "http://127.0.0.1:9200/test_index" {"acknowledged":true,"shards_acknowledged":true,"index":"test_index"} # sprawdź [root@vlsr01 ~]# curl http://127.0.0.1:9200/_aliases?pretty { "test_index" : { "aliases" : { } } } [root@vlsr01 ~]# curl http://127.0.0.1:9200/test_index/_settings?pretty { "test_index" : { "settings" : { "index" : { "routing" : { "allocation" : { "include" : { "_tier_preference" : "data_content" } } }, "number_of_shards" : "1", "provided_name" : "test_index", "creation_date" : "1647938056753", "number_of_replicas" : "1", "uuid" : "nRIaDNCOT6mi6_aotyUoSA", "version" : { "created" : "7170199" } } } } }
[4] Zdefiniuj mapowanie i wstaw dane testowe.
Mapowanie definiuje strukturę indeksu. W przypadku wstawiania danych, mapowanie zostanie zdefiniowane automatycznie, ale oczywiście istnieje możliwość ręcznego zdefiniowania.
# wstaw dane [root@vlsr01 ~]# curl -H "Content-Type: application/json" \ -X PUT "http://127.0.0.1:9200/test_index/doc01/1" -d '{ "subject" : "Test Post No.1", "description" : "This is the initial post", "content" : "This is the test message for using Elasticsearch." }' {"_index":"test_index","_type":"doc01","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1} # pokaż mapowanie [root@vlsr01 ~]# curl "http://127.0.0.1:9200/test_index/_mapping/?pretty" { "test_index" : { "mappings" : { "properties" : { "content" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "description" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "subject" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } } } } # pokaż dane [root@vlsr01 ~]# curl "http://127.0.0.1:9200/test_index/doc01/1?pretty" { "_index" : "test_index", "_type" : "doc01", "_id" : "1", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "subject" : "Test Post No.1", "description" : "This is the initial post", "content" : "This is the test message for using Elasticsearch." } } # wyszukaj dane # przykład warunków wyszukiwania poniżej oznacza, że pole [description] zawiera słowo [initial] [root@vlsr01 ~]# curl "http://127.0.0.1:9200/test_index/doc01/_search?q=description:initial&pretty=true" { "took" : 344, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.2876821, "hits" : [ { "_index" : "test_index", "_type" : "doc01", "_id" : "1", "_score" : 0.2876821, "_source" : { "subject" : "Test Post No.1", "description" : "This is the initial post", "content" : "This is the test message for using Elasticsearch." } } ] } }