Elasticsearch
Siehe auch
Eine Liste der Begriffe und Konzepte einer Lucene-basierten Suchmaschine ist unter OpenSearch zu finden.
API-Calls
Referenz: https://www.elastic.co/docs/api/doc/elasticsearch/
Allgemeine Optionen: https://www.elastic.co/docs/reference/elasticsearch/rest-apis/common-options#common-options-response-filtering
elastic_host=localhost
elastic_cacert=/etc/elasticsearch/certs/http_ca.crt
# list all nodes and their roles
curl --cacert "$elastic_cacert" \
--user "elastic:${ELASTIC_PASSWORD}" \
--request GET "https://$elastic_host:9200/_cat/nodes?v&h=name,ip,node.role" \
--header "Content-Type: application/json"
# disk size used by *just* the primaries
curl --cacert "$elastic_cacert" \
--user "elastic:${ELASTIC_PASSWORD}" \
--request GET "https://$elastic_host:9200/_stats/store?filter_path=indices.*.primaries.store.size_in_bytes" \
--header "Content-Type: application/json" | jq '[.indices[].primaries.store.size_in_bytes] | add'
Troubleshooting
- Herausfinden, warum Shards „unassigned“ sind
elastic_host=localhost elastic_cacert=/etc/elasticsearch/certs/http_ca.crt curl --cacert "$elastic_cacert" \ --user "elastic:${ELASTIC_PASSWORD}" \ --request GET "https://$elastic_host:9200/_cluster/allocation/explain?pretty=true" \ --header "Content-Type: application/json"
number_of_replicasbei einem Managed Index Template anpassenDas Template sollte nicht direkt angepasst werden, da dieses z.B. vom Fleet Manager administriert wird. Um trotzdem Modifikationen vornehmen zu können, gibt es normalerweise ein
<index name>@customComponent Template, z.B.kibana_sample_data_logs@custom. Falls es dieses nicht gibt kann ein leeres Component Template erstellt werden und im Index Template importiert werden (Achtung: die Reihenfolge spielt der Component Templates spielt eine Rolle).Bemerkung
Man könnte ein neues Index Template mit einer höheren Priority anlegen, allerdings wird dann gesamte Template überschrieben - nicht nur eine bestimmte Einstellung.
Anschliessend im Component Template die
number_of_replicas(oder eine andere Einstellung) setzen:index_name='kibana_sample_data_logs' curl --cacert "$elastic_cacert" \ --user "elastic:${ELASTIC_PASSWORD}" \ --request PUT "https://$elastic_host:9200/_component_template/$index_name%40custom?pretty=true" \ --header "Content-Type: application/json" \ --data @- << 'EOF' { "template": { "settings": { "index": { "number_of_replicas": "3" } } } } EOF
Mit folgendem API-Call kann die Erstellung eines neuen Indexes simuliert und die vererbten Einstellungen geprüft werden:
index_name='kibana_sample_data_logs' curl --cacert "$elastic_cacert" \ --user "elastic:${ELASTIC_PASSWORD}" \ --request POST "https://$elastic_host:9200/_index_template/_simulate_index/$index_name" \ --header "Content-Type: application/json" | jq | grep number_of_replicas
Ausserdem sollte geprüft werden, ob eine Index Lifecycle Management („ILM“) Policy die
number_of_replicasanpasst. Ist dies der Fall, kann man die ILM Policy kopieren und in dem<index name>@customComponent Template auf die Kopie verweisen, beispielsweise:index_name='kibana_sample_data_logs' curl --cacert "$elastic_cacert" \ --user "elastic:${ELASTIC_PASSWORD}" \ --request PUT "https://$elastic_host:9200/_component_template/$index_name%40custom?pretty=true" \ --header "Content-Type: application/json" \ --data @- << 'EOF' { "template": { "settings": { "index": { "lifecycle": { "name": "logs-1-replica" }, "number_of_replicas": "3" } } } } EOF