elasticsearch-head第三方的查詢工具
elasticsearch-head gitcss
環境:
elasticsearch6.xhtml
查詢鏡像:git
$ docker search elasticsearch-head INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/mobz/elasticsearch-head elasticsearch-head front-end and standalon... 46 docker.io docker.io/alivv/elasticsearch-head elasticsearch-head front-end and standalon... 6 docker.io docker.io/jeanberu/elasticsearch-head ElasticSearch:1 with elasticsearch-head pl... 6 [OK] ...
拉取鏡像:github
$ docker pull docker.io/mobz/elasticsearch-head:5 ....
elasticsearch-head:5 標準版本(最新),兼容elasticsearch 5.x和6.x版本服務正則表達式
運行:chrome
$ docker run -d --name elastic-head -p 9100:9100 mobz/elasticsearch-head:5
訪問地址:http:ip:9100docker
緣由:默認elasticsearch不支持跨域請求
解決辦法:json
http.cors.enabled | 是否支持跨域,默認爲false |
http.cors.allow-origin | 當設置容許跨域,默認爲*,表示支持全部域名,若是咱們只是容許某些網站能訪問,那麼能夠使用正則表達式。好比只容許本地地址。 /https?://localhost(:[0-9]+)?/ |
在config/elasticsearch.yml
文件末尾添加如上兩個配置,並重啓:跨域
$ tail -n 2 config/elasticsearch.yml http.cors.enabled: true http.cors.allow-origin: "*"
緣由:elasticsearch-head是第三方客戶端,默認的contentType:application/x-www-form-urlencoded
標頭不符合ES6.x新增的安全機制。新版本進行嚴格的內容類型檢查,防止跨站點請求僞造攻擊。
解決辦法:修改elasicsearch-head程序中的有關 contentType
的設置,設置成符合安全機制的contentType:application/json;charset=UTF-8
瀏覽器
$ docker exec -it elastic-head bash root@26a619845111:/usr/src/app# cd _site/ root@26a619845111:/usr/src/app/_site# ls -l total 780 -rw-r--r-- 1 root root 14908 Feb 22 2016 app.css -rw-r--r-- 1 root root 143298 Jan 6 2017 app.js drwxr-xr-x 2 root root 61 Nov 3 2015 base drwxr-xr-x 2 root root 154 Nov 3 2015 fonts -rw-r--r-- 1 root root 2860 Jun 28 2016 i18n.js -rw-r--r-- 1 root root 1043 Jan 6 2017 index.html drwxr-xr-x 2 root root 111 Jan 6 2017 lang -rw-r--r-- 1 root root 21643 Feb 22 2016 vendor.css -rw-r--r-- 1 root root 605341 Jun 21 01:58 vendor.js #修改vendor.js的第6886和7574行,將application/x-www-form-urlencoded改成application/json;charset=UTF-8
修改好的vendor.js文件:https://blog-static.cnblogs.com/files/dance-walter/vendor.js
從新啓動服務:
$ docker kill elastic-head $ docker rm elastic-head $ mkdir -p /usr/src/app/_site/ #新建目錄,並將vendor.js文件上傳。docker啓動時映射此文件便可 $ docer run -d --name elastic-head -p 9100:9100 -v /usr/src/app/_site/vendor.js:/usr/src/app/_site/vendor.js mobz/elasticsearch-head:5
正常查詢:
官網解釋:https://www.elastic.co/cn/blog/strict-content-type-checking-for-elasticsearch-rest-requests
最後:
chrome
瀏覽器裏的elasticsearch-head插件是沒有上述問題的。直接安裝便可用。