Title: πŸ”Ž OpenSearch Group: Databases Icon: πŸ”Ž Order: 4 --- ## πŸ“š Table of Contents / Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ 1. [Installation & Configuration / Установка ΠΈ Настройка](#1-installation--configuration--установка-ΠΈ-настройка) 2. [Cluster Management / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΎΠΌ](#2-cluster-management--ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅-кластСром) 3. [Index Management / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ИндСксами](#3-index-management--ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅-индСксами) 4. [Document Management / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ](#4-document-management--ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ) 5. [Backup & Restore / Бэкап ΠΈ ВосстановлСниС](#5-backup--restore--бэкап-ΠΈ-восстановлСниС) 6. [Security / Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ](#6-security--Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ) 7. [Sysadmin Operations / БисадминскиС ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ](#7-sysadmin-operations--сисадминскиС-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ) 8. [Tools / Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹](#8-tools--инструмСнты) 9. [Logrotate Configuration / ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Logrotate](#9-logrotate-configuration--конфигурация-logrotate) --- ## 1) πŸ“¦ Installation & Configuration / Установка ΠΈ Настройка ### Install / Установка ```bash env OPENSEARCH_INITIAL_ADMIN_PASSWORD= dpkg -i opensearch-2.19.2-linux-x64.deb # Install .deb with admin pass / Установка .deb с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ # or / ΠΈΠ»ΠΈ tar -zxvf opensearch-1.3.0.tar.gz # Extract archive / Распаковка Π°Ρ€Ρ…ΠΈΠ²Π° ./opensearch-tar-install.sh # Run installer / Запуск установщика docker run opensearchproject/opensearch:3.7.0 # Run in Docker / Запуск Π² Docker ``` ### System Tuning / Настройка систСмы ```bash # /etc/sysctl.d/99-opensearch.conf vm.max_map_count = 262144 vm.swappiness = 1 fs.file-max = 262144 ``` # Apply sysctl / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ sysctl sysctl --system ```bash # /etc/security/limits.d/99-opensearch.conf opensearch soft nofile 65536 opensearch hard nofile 65536 opensearch soft nproc 4096 opensearch hard nproc 4096 opensearch soft memlock unlimited opensearch hard memlock unlimited ``` # Systemd override (systemctl edit opensearch) ```bash [Service] LimitNOFILE=65536 LimitNPROC=4096 LimitMEMLOCK=infinity ``` --- ## 2) βš™οΈ Cluster Management / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΎΠΌ ```bash curl -sS -u 'admin:' http://localhost:9200/ # Ping cluster (version) / Пинг кластСра (вСрсия) curl -sS -u 'admin:' http://localhost:9200/_cluster/health?pretty # Cluster health / Π—Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅ кластСра curl -sS -u 'admin:' http://localhost:9200/_cat/nodes?v # Nodes table / Π’Π°Π±Π»ΠΈΡ†Π° ΡƒΠ·Π»ΠΎΠ² curl -sS -u 'admin:' http://localhost:9200/_cluster/settings # View cluster settings / Настройки кластСра ``` ### Drain Node / Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠ΄Ρ‹ ```bash # Exclude node by name (drain) / Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ΄Ρƒ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ curl -XPUT localhost:9200/_cluster/settings -H 'Content-Type: application/json' -d '{ "transient": { "cluster.routing.allocation.exclude._name": "os-data-1" } }' # Check shards on node / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡˆΠ°Ρ€Π΄Ρ‹ Π½Π° Π½ΠΎΠ΄Π΅ curl -s localhost:9200/_cat/shards?v | grep os-data-1 || echo "empty" ``` --- ## 3) πŸ—‚οΈ Index Management / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ИндСксами ### Basics / ΠžΡΠ½ΠΎΠ²Ρ‹ ```bash curl -sS -u 'admin:' http://localhost:9200/_cat/indices?v # Indices table / Π’Π°Π±Π»ΠΈΡ†Π° индСксов curl -sS -u 'admin:' -X DELETE http://localhost:9200/my-index # Delete index / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ индСкс # Create index with settings / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс с настройками curl -sS -u 'admin:' -X PUT http://localhost:9200/my-index \ -H 'Content-Type: application/json' \ -d '{ "settings": {"number_of_shards":1,"number_of_replicas":1} }' # Show mapping / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ mapping curl -sS -u 'admin:' http://localhost:9200/my-index/_mapping?pretty # Update mapping (add field) / ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ mapping (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅) curl -sS -u 'admin:' -X PUT http://localhost:9200/my-index/_mapping \ -H 'Content-Type: application/json' \ -d '{ "properties": { "tag": { "type": "keyword" } } }' # Force merge / Ѐорс-ΠΌΠ΅Ρ€Π΄ΠΆ curl -u 'admin:' -X POST "http://localhost:9200/my-index/_forcemerge?max_num_segments=1" ``` ### πŸ“˜ Reindexing Guide / Руководство ΠΏΠΎ рСиндСксации #### 1. Create Destination Index / Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ индСкса ```bash curl -u 'admin:' -X PUT "http://localhost:9200/logs-v2" -H 'Content-Type: application/json' -d '{ "settings": { "number_of_shards": 6, "number_of_replicas": 0, // Disable replicas for speed / Π‘Π΅Π· Ρ€Π΅ΠΏΠ»ΠΈΠΊ для скорости "refresh_interval": "-1" // Disable refresh for speed / ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ refresh }, "mappings": { "dynamic": "strict", "properties": { ... } } }' ``` #### 2. Run Reindex / Запуск ```bash # Basic / Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ curl -u 'admin:' -X POST "http://localhost:9200/_reindex?refresh=true" -H 'Content-Type: application/json' -d '{ "source": { "index": "logs-legacy" }, "dest": { "index": "logs-v2" } }' # Percentage/Async / Асинхронно curl -u 'admin:' -X POST "http://localhost:9200/_reindex?wait_for_completion=false" ... ``` #### 3. Aliases / Алиасы (Zero Downtime) ```bash curl -u 'admin:' -X POST "http://localhost:9200/_aliases" -H 'Content-Type: application/json' -d '{ "actions": [ { "remove": { "alias": "logs", "index": "logs-legacy" } }, { "add": { "alias": "logs", "index": "logs-v2", "is_write_index": true } } ] }' ``` --- ## 4) πŸ“„ Document Management / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ### CRUD ```bash # Index/Replace (ID=1) / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ/Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (ID=1) curl -sS -u 'admin:' -X POST http://localhost:9200/my-index/_doc/1 \ -H 'Content-Type: application/json' \ -d '{ "title":"hello","tag":"demo","ts":"2025-08-27T10:00:00Z" }' # Get Document / ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ curl -sS -u 'admin:' http://localhost:9200/my-index/_doc/1 # Partial Update / ЧастичноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ curl -sS -u 'admin:' -X POST http://localhost:9200/my-index/_update/1 \ -H 'Content-Type: application/json' \ -d '{ "doc": { "tag":"updated" } }' # Delete Document / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ curl -sS -u 'admin:' -X DELETE http://localhost:9200/my-index/_doc/1 ``` ### Search / Поиск ```bash # Simple Match / ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ поиск curl -sS -u 'admin:' -X POST http://localhost:9200/my-index/_search \ -H 'Content-Type: application/json' \ -d '{ "query": { "match": { "title": "hello" } }, "size": 5 }' ``` ### Bulk / Массовая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ```bash # bulk.json format / Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ # { "index": { "_index":"my-index","_id":"2" } } # { "title":"bulk item 2","tag":"demo" } curl -sS -u 'admin:' -X POST http://localhost:9200/_bulk \ -H 'Content-Type: application/x-ndjson' --data-binary @bulk.json # Execute Bulk / Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Bulk ``` --- ## 5) πŸ’Ύ Backup & Restore / Бэкап ΠΈ ВосстановлСниС ### Snapshot Repository / Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ```bash # Register FS Repository / РСгистрация FS рСпозитория curl -X PUT "https://localhost:9200/_snapshot/my_backup_repository" \ -H "Content-Type: application/json" \ -u 'admin:' --insecure \ -d '{ "type": "fs", "settings": { "location": "/var/backups/opensearch", "compress": true } }' # Register S3 Repository / РСгистрация S3 рСпозитория # Use type "s3" and configure bucket/base_path / Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ type "s3" ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ bucket ``` ### Snapshots / Π‘Π½Π°ΠΏΡˆΠΎΡ‚Ρ‹ ```bash # Create Snapshot / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ½Π°ΠΏΡˆΠΎΡ‚ curl -X PUT "https://localhost:9200/_snapshot/my_backup_repository/snapshot_$(date +%Y-%m-%d)" \ -H "Content-Type: application/json" \ -u 'admin:' --insecure \ -d '{ "indices": "*", "ignore_unavailable": true, "include_global_state": false }' # List Snapshots / Бписок ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² curl -sS -u 'admin:' http://localhost:9200/_snapshot/my_backup_repository/_all?pretty ``` ### Restore / ВосстановлСниС ```bash # Restore All / Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всё curl -X POST "https://localhost:9200/_snapshot/my_backup_repository/snapshot_DATE/_restore" \ -u 'admin:' --insecure \ -H 'Content-Type: application/json' \ -d '{ "indices": "*", "ignore_unavailable": true, "include_global_state": false }' # Restore with Rename / Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ с ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ curl -X POST "https://localhost:9200/_snapshot/my_backup_repository/snapshot_DATE/_restore" \ -u 'admin:' --insecure \ -H 'Content-Type: application/json' \ -d '{ "indices": "logs-*", "rename_pattern": "^(.*)$", "rename_replacement": "restored_$1" }' ``` ### πŸ•’ Automation Script / Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ```bash #!/bin/bash # /usr/local/bin/os-backup.sh SNAPSHOT_NAME="snapshot_$(date +%Y-%m-%d)" curl -X PUT "https://localhost:9200/_snapshot/my_backup_repository/$SNAPSHOT_NAME" \ -H "Content-Type: application/json" -u 'admin:' --insecure \ -d '{ "indices": "*", "ignore_unavailable": true, "include_global_state": false }' echo "βœ… Snapshot $SNAPSHOT_NAME is created" # Clean old snapshots (example > 7 days) / ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° старых (> 7 Π΄Π½Π΅ΠΉ) OLD=$(date -d "-7 days" +%Y-%m-%d) curl -s -u 'admin:' -X DELETE "https://localhost:9200/_snapshot/my_backup_repository/snapshot_${OLD}*" ``` **Cron:** ```bash 0 3 * * * /usr/local/bin/os-backup.sh >> /var/log/opensearch_backup.log 2>&1 ``` ### πŸ“‘ NFS Setup for Shared Repo / Настройка NFS > **Goal/ЦСль**: `/mnt/backups` shared across all nodes. / `/mnt/backups` доступСн Π½Π° всСх Π½ΠΎΠ΄Π°Ρ…. **Server (NFS Host):** ```bash sudo dnf install -y nfs-utils # Install NFS tools / Установка ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ sudo mkdir -p /mnt/backups && sudo chown opensearch:opensearch /mnt/backups # Create & Chown / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€Π°Π²Π° echo "/mnt/backups /24(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports # Export / Экспорт sudo exportfs -ra && sudo systemctl enable --now nfs-server # Apply & Start / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ``` **Clients (OpenSearch Nodes):** ```bash sudo dnf install -y nfs-utils # Install tools / Установка ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ sudo mkdir -p /mnt/backups # Create mountpoint / Π’ΠΎΡ‡ΠΊΠ° монтирования # Update /etc/fstab echo ":/mnt/backups /mnt/backups nfs rw,noatime,hard,intr,_netdev,nfsvers=4.2 0 0" | sudo tee -a /etc/fstab sudo mount -a # Mount / ΠŸΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ``` --- ## 6) πŸ” Security / Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ### User Management / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ```bash # Create Read-Only Role / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ (Read-Only) curl -u 'admin:' -X PUT "http://localhost:9200/_plugins/_security/api/roles/ro-logs" \ -H "Content-Type: application/json" -d '{ "cluster_permissions": [], "index_permissions": [ { "index_patterns": ["logs-*"], "allowed_actions": ["read"] } ] }' # Create User / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ curl -u 'admin:' -X PUT "http://localhost:9200/_plugins/_security/api/internalusers/alice" \ -H "Content-Type: application/json" -d '{ "password": "", "backend_roles": [], "description": "RO User" }' # Map User to Role / ΠŸΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊ Ρ€ΠΎΠ»ΠΈ curl -u 'admin:' -X PUT "http://localhost:9200/_plugins/_security/api/rolesmapping/ro-logs" \ -H "Content-Type: application/json" -d '{ "users": ["alice"], "backend_roles": [], "hosts": [] }' ``` ### Action Groups / Π“Ρ€ΡƒΠΏΠΏΡ‹ дСйствий | Group | Actions | Desc (RU) | |---|---|---| | `read` | search, get, mget | Волько Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ | | `write` | index, update, delete | Π—Π°ΠΏΠΈΡΡŒ Π±Π΅Π· поиска | | `crud` | read + write | ΠŸΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ | | `manage` | create/del index, mappings | Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ индСксами | | `all` | everything | ΠŸΠΎΠ»Π½Ρ‹ΠΉ доступ | ### Change Admin Password / Π‘ΠΌΠ΅Π½Π° пароля Admin ```bash # Using securityadmin.sh (requires certificates) / Π§Π΅Ρ€Π΅Π· скрипт (Π½ΡƒΠΆΠ½Ρ‹ сСртификаты) OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk /usr/share/opensearch/plugins/opensearch-security/tools/securityadmin.sh \ -icl -cacert /etc/opensearch/root-ca.pem \ -cert /etc/opensearch/kirk.pem -key /etc/opensearch/kirk-key.pem \ -t internalusers -f current-config/internal_users.yml ``` --- ## 7) 🐧 Sysadmin Operations / БисадминскиС ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ### Service & Logs / БСрвис ΠΈ Π›ΠΎΠ³ΠΈ ```bash systemctl start opensearch # Start service / Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвис systemctl stop opensearch # Stop service / ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСрвис systemctl status opensearch # Status / Бтатус journalctl -u opensearch -f # Follow service logs / Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π»ΠΎΠ³Π°ΠΌΠΈ сСрвиса tail -f /var/log/opensearch/opensearch.log # Follow main log / Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° основным Π»ΠΎΠ³ΠΎΠΌ grep "ERROR" /var/log/opensearch/opensearch.log # Find errors / Найти ошибки ``` ### Important Paths / Π’Π°ΠΆΠ½Ρ‹Π΅ ΠŸΡƒΡ‚ΠΈ * **Config**: `/etc/opensearch/opensearch.yml` β€” Main config / Основной ΠΊΠΎΠ½Ρ„ΠΈΠ³ * **JVM**: `/etc/opensearch/jvm.options` β€” Heap size & GC / Настройки Java * **Logs**: `/var/log/opensearch/` β€” Logs directory / ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Π»ΠΎΠ³ΠΎΠ² * **Data**: `/var/lib/opensearch/` β€” Data directory (Indices) / Π”Π°Π½Π½Ρ‹Π΅ (Π˜Π½Π΄Π΅ΠΊΡΡ‹) * **Home**: `/usr/share/opensearch/` β€” Binary home / Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ дирСктория ### JVM Tuning / Настройка JVM ```bash # Edit /etc/opensearch/jvm.options -Xms4g -Xmx4g # Rule: Set Xms and Xmx to 50% of RAM, but not more than 31GB # ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ: Π‘Ρ‚Π°Π²ΡŒΡ‚Π΅ Xms ΠΈ Xmx = 50% RAM, Π½ΠΎ Π½Π΅ большС 31GB ``` ### Network & Firewall / Π‘Π΅Ρ‚ΡŒ ΠΈ Π€Π°ΠΉΡ€Π²ΠΎΠ» ```bash # Ports / ΠŸΠΎΡ€Ρ‚Ρ‹ # 9200: REST API (HTTP) # 9300: Transport (Inter-node communication) # Firewalld Rules / ΠŸΡ€Π°Π²ΠΈΠ»Π° Firewalld firewall-cmd --permanent --add-port=9200/tcp firewall-cmd --permanent --add-port=9300/tcp firewall-cmd --reload ``` ### Keystore / Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сСкрСтов ```bash # List secrets / Бписок сСкрСтов /usr/share/opensearch/bin/opensearch-keystore list # Add secret (e.g. s3 keys) / Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сСкрСт /usr/share/opensearch/bin/opensearch-keystore add s3.client.default.access_key ``` ### Plugins / ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ ```bash # List plugins / Бписок ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² /usr/share/opensearch/bin/opensearch-plugin list # Install plugin / Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ /usr/share/opensearch/bin/opensearch-plugin install analysis-icu # Remove plugin / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ /usr/share/opensearch/bin/opensearch-plugin remove analysis-icu ``` --- ## 8) πŸ› οΈ Tools / Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ### cURL Toolbox ```bash curl -L https://example.com # Follow redirects / Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚Π°ΠΌ curl -H 'Content-Type: application/json' -d @file.json URL # POST from file / POST ΠΈΠ· Ρ„Π°ΠΉΠ»Π° curl -s -o /dev/null -w '%{http_code}\n' URL # Print Status Code / ВывСсти HTTP ΠΊΠΎΠ΄ curl -u 'user:pass' --insecure URL # Auth & Skip SSL / Авторизация ΠΈ ΠΈΠ³Π½ΠΎΡ€ SSL curl -s -o /dev/null -w 'dns:%{time_namelookup} total:%{time_total}\n' URL # Timing / Π’Π°ΠΉΠΌΠΈΠ½Π³ΠΈ ``` ### Elasticdump ```bash # Ignore SSL / Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ SSL export NODE_TLS_REJECT_UNAUTHORIZED=0 # Export Mapping / Экспорт Mapping elasticdump --input=https://admin:@localhost:9200/my-index --output=mapping.json --type=mapping # Export Data / Экспорт Π”Π°Π½Π½Ρ‹Ρ… elasticdump --input=https://admin:@localhost:9200/my-index --output=data.json --type=data # Import / Π˜ΠΌΠΏΠΎΡ€Ρ‚ elasticdump --input=data.json --output=https://admin:@target:9200/my-index --type=data ``` --- ## 9. Logrotate Configuration / ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Logrotate ```bash /etc/logrotate.d/opensearch ``` ```bash /var/log/opensearch/*.log { daily rotate 14 compress delaycompress missingok notifempty create 640 opensearch opensearch sharedscripts postrotate systemctl reload opensearch > /dev/null 2>&1 || true endscript } ``` > [!NOTE] > OpenSearch can also manage logs internally via `logging.yml` configuration. > OpenSearch Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΎΠ³Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ `logging.yml`. ---