Skip to main content

Elasticsearch Single Node

Server IPHost Role
192.168.10.10Elasticsearch Server

Elasticsearch Node01

  1. Download the Elasticsearch installation package

    wget https://pdpublic.mingdao.com/private-deployment/offline/common/elasticsearch-8.19.8-linux-x86_64.tar.gz
  2. Download the elasticsearch-ik plugin package

    wget https://pdpublic.mingdao.com/private-deployment/offline/common/elasticsearch-analysis-ik-8.19.8.zip
  3. Extract Elasticsearch to the installation directory

    tar xf elasticsearch-8.19.8-linux-x86_64.tar.gz
    mv elasticsearch-8.19.8 /usr/local/elasticsearch
  4. Extract the elasticsearch-ik plugin to the installation directory

    mkdir /usr/local/elasticsearch/plugins/elasticsearch-analysis-ik
    unzip elasticsearch-analysis-ik-8.19.8.zip -d /usr/local/elasticsearch/plugins/elasticsearch-analysis-ik/
  5. Adjust system environment parameters

    echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
    echo 'vm.swappiness=1' >> /etc/sysctl.conf
    echo 'net.ipv4.tcp_retries2=5' >> /etc/sysctl.conf
    sysctl -p

    echo "* soft nofile 65536" >> /etc/security/limits.conf
    echo "* hard nofile 65536" >> /etc/security/limits.conf
    ulimit -n 65536
  6. Modify the Elasticsearch configuration file

    cat > /usr/local/elasticsearch/config/elasticsearch.yml <<'EOF'
    cluster.name: md-elasticsearch-private
    node.name: elasticsearch-1
    node.roles: [master,data]
    network.host: 0.0.0.0
    http.port: 9200
    transport.port: 9300
    path.data: /data/elasticsearch/data
    path.logs: /data/elasticsearch/logs
    ingest.geoip.downloader.enabled: false
    xpack.security.enabled: true
    xpack.security.http.ssl.enabled: false
    xpack.security.transport.ssl.enabled: false
    cluster.max_shards_per_node: 20000
    discovery.type: single-node
    EOF
  7. Modify the Elasticsearch JVM memory limit to 4g

    sed -ri "s/##[, ]*(-Xm[s|x])[0-9]g/\14g/g" /usr/local/elasticsearch/config/jvm.options
  8. Create data directories

    mkdir -p /data/elasticsearch/{data,logs}
  9. Create the Elasticsearch user and grant directory permissions

    useradd -M -s /sbin/nologin elasticsearch
    chown -R elasticsearch:elasticsearch /data/elasticsearch /usr/local/elasticsearch
  10. Configure systemd management

    cat > /etc/systemd/system/elasticsearch.service <<'EOF'
    [Unit]
    Description=Elasticsearch
    [Service]
    User=elasticsearch
    Group=elasticsearch
    LimitNOFILE=102400
    ExecStart=/usr/local/elasticsearch/bin/elasticsearch
    ExecStop=/usr/bin/kill $MAINPID
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target
    EOF
  11. Start the Elasticsearch service and enable it to start on boot

    systemctl start elasticsearch
    systemctl enable elasticsearch
  12. Configure authentication

    /usr/local/elasticsearch/bin/elasticsearch-reset-password -u elastic -i

    # The password 123456 will not be displayed when entered in the terminal; you can paste it or type it in normally.
    # In an actual deployment, you must change it to a strong password. If the password contains special characters, only `-` or `_` are allowed. Avoid using characters like `@ ! # &` to prevent compatibility issues.

    # If resetting the password non-interactively, please ensure the Elasticsearch service is already started:
    ss -lnt | grep 9200

    elastic_pwd=123456
    echo -e "y\n${elastic_pwd}\n${elastic_pwd}" | /usr/local/elasticsearch/bin/elasticsearch-reset-password -u elastic -i

Status Check

Check the service status

systemctl status elasticsearch

Check the Elasticsearch node status

curl -u elastic:123456 127.0.0.1:9200/_cat/health?v

Check installed plugins on the node

curl -u elastic:123456 127.0.0.1:9200/_cat/plugins