Web administration for Elasticsearch (2.x to 8.x)
Table of contents
Disclaimer
The application named elasticsearch-admin is NOT affiliated in any way with Elasticsearch BV.
Elasticsearch is a trademark of Elasticsearch BV, registered in the U.S. and in other countries.
Features
- Supported Elasticsearch versions: 2.x, 5.x, 6.x, 7.x, 8.x
- Connection to Elasticsearch: server-side (no CORS issue), private or public, local or remote, http or https, authorization with user/password or API key
- App users: register, login, logout, list, create, read, update, delete
- App roles: list, create, read, update (permissions), delete
- Notifications (Push API, Email, Slack Incoming Webhook, Microsoft Teams Incoming Webhook) about cluster health, node up, node down, disk threshold, license expiration, ES version
- Cluster: basic metrics, audit, disk thresholds, allocation explain [5.0], settings [5.0] (list, update)
- Nodes: list, stats, reload secure settings [6.4], read, settings, usage [6.0], plugins
- Indices: list, stats, reindex, create, read, update, lifecycle [6.6] (explain, remove policy), delete, close / open, freeze / unfreeze [6.6], force merge [2.1], clear cache, flush, refresh, empty [5.0], search by query, export (CSV, TSV, ODS, XLSX, GEOJSON), import from file (ODS, XLSX), import from database (MySQL, PostgreSQL), aliases (list, create, delete)
- Legacy index templates: list, create, read, update, delete, copy
- Composable index templates [7.8]: list, create, read, update, delete, copy
- Component templates [7.8]: list, create, read, update, delete, copy
- Index lifecycle management policies [6.6]: list, status, start, stop, create, read, update, delete, copy
- Shards: list, stats, cluster reroute (move, allocate replica, cancel allocation)
- Repositories: list, create (fs, s3, gcs, azure), read, update, delete, cleanup, verify
- Snapshot lifecycle management policies [7.4]: list, status, start, stop, create, read, update, delete, execute, history, stats, copy
- Snapshots: list, stats, create, read, delete, failures, restore, clone [7.10]
- Elasticsearch users (native realm): list, create, read, update, delete, enable, disable
- Elasticsearch roles: list, create, read, update, delete, copy
- Tasks [2.3]: list
- Remote clusters [5.4]: list
- Enrich policies [7.5]: list, stats, create (match, geo_match, range [7.16]), read, delete, execute, copy
- Pipelines [5.0]: list, create, read, update, delete, copy
- Compact and aligned text (CAT) APIs: list, export (CSV, TSV, ODS, XLSX)
- Console
- SQL access [6.3]: query, translate to DSL
- Deprecations info [5.6]
- License [5.0]: read, status / start trial / revert to basic [6.6], features
- Index graveyard [5.0]: list
- Dangling indices [7.9]: list, import, delete
- Data streams [7.9]: list, create, read, delete, stats
Screenshots
Selection
All screenshots
Installation
Running with Docker
Requirements
- Docker: Visit
Steps
The Docker image is hosted on Docker Hub Visit
docker pull stephanediondev/elasticsearch-admin
docker run -e "ELASTICSEARCH_URL=http://x.x.x.x:9200" -e "SECRET_REGISTER=xxxxx" -p 80:8080 -p 443:4443 -d --name elasticsearch-admin stephanediondev/elasticsearch-admin
Edit ELASTICSEARCH_URL
and SECRET_REGISTER
(random string to secure registration)
If Elasticsearch security features are enabled, add -e "ELASTICSEARCH_USERNAME=xxxxx" -e "ELASTICSEARCH_PASSWORD=xxxxx"
or -e "ELASTICSEARCH_API_KEY=xxxxx"
If you have SSL certificates, add -v /path/privkey.pem:/etc/nginx/privkey.pem -v /path/fullchain.pem:/etc/nginx/fullchain.pem
Source installation
Requirements
Web server
Configure a vhost with the document root set to the public
folder (ie /var/www/elasticsearch-admin/public)
Apache
Add the vhost below
<VirtualHost *:80>
DocumentRoot "/var/www/elasticsearch-admin/public"
ServerName your-domain-or-sub-domain
ErrorLog ${APACHE_LOG_DIR}/elasticsearch-admin-error.log
CustomLog ${APACHE_LOG_DIR}/elasticsearch-admin-access.log combined
<Directory /var/www/elasticsearch-admin/public>
AllowOverride None
DirectoryIndex index.php
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
RewriteRule .* - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .+
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 307 ^/$ /index.php/
</IfModule>
</IfModule>
</Directory>
</VirtualHost>
If you can’t edit a vhost, add the Apache pack to get the .htaccess
file in the public
folder
composer require symfony/apache-pack
nginx
Add the server definition below
server {
listen [::]:8080 default_server;
listen 8080 default_server;
server_name your-domain-or-sub-domain;
sendfile off;
root /var/www/elasticsearch-admin/public;
index index.php index.html;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
}
Steps
Download or clone the repository from GitHub Visit
Launch the following commands to install
cd /var/www/elasticsearch-admin/
composer install
bin/console asset-map:compile
cp .env.dist .env
In the .env
file edit ELASTICSEARCH_URL
and SECRET_REGISTER
(random string to secure registration)
If Elasticsearch security features are enabled, edit ELASTICSEARCH_USERNAME
and ELASTICSEARCH_PASSWORD
or ELASTICSEARCH_API_KEY
You can also edit VAPID_PUBLIC_KEY
and VAPID_PRIVATE_KEY
to use push notifications (only in HTTPS)
You can generate values with the command below
bin/console app:generate-vapid
Add a cron command to send notifications every 5 minutes
crontab -e
# m h dom mon dow command
*/5 * * * * cd /var/www/elasticsearch-admin && bin/console app:send-notifications
Launch
Once the installation is finished, you can access the application with one of the URL below (depending on your installation):
- http://docker-ip
- https://docker-ip (you need to approve the default localhost certificate)
- http://your-domain-or-sub-domain
- https://your-domain-or-sub-domain (if you have added certificates)
You will see a register page to create the first user (you need the secret registration key) View
After registration you can login View
License
Privacy
This application does NOT collect and send any user data.
Tests
vendor/bin/phpstan analyse -l 6 src
vendor/bin/phpstan analyse -l 6 tests
bin/console app:phpunit
bin/phpunit