인덱스 데이터 Elasticsearch를 조회하는 SQL 문을 사용하여

Elasticsearch 쿼리 언어는 합리적인 존재, 진리가 존재하고, 결국 공식 쿼리 DSL이다. SQL 데이터베이스 쿼리 언어 구문, 간단한 쓰기가 용이하고 서버 측 프로그래머의 대부분은 자신과 표현의 명확한 이해를 잘 알고있는 것처럼. 그러나 새로운 ES 멩로 그는 이미 프로그래밍 업계 오래된 여행자했지만, 그는 ES 서비스를 설정 한 회사를 이용하고자하는 경우, 그 첫 번째 쿼리 DSL을 배워야한다, 그래서 그는 잘 알고 ES 아니었다면, 학습해도 사람, 비용은 기술 개발과 안정성의 진행에 영향을 미치는 요인이 높지 않을 수도 있습니다. ES SQL 쿼리 지원, 그는이 년 또는 학생의 두 일하고 어쩌면 경우, 그는 ES 복합체의 개념을 이해하지 않은 경우에, 그는 ES의 좋은 사용 될 수 있으며 성공적으로 결국 팀의 개발에 참여하는 SQL 그것을 기록하지?

Elasticsearch-SQL은 Elasticsearch의 공식 속하지 않는, 그것은 NLPChina (중국 자연 언어 처리 오픈 소스)는 ES 플러그인을 열고이며, 주요 기능은 SQL을 통해 ES를 조회하는 것입니다, 사실, 바닥은 DSL 문법에 SQL, SQL 변환을 설명하는 것입니다 다음 DSL을 통해 쿼리합니다.

Github의 주소 : https://github.com/NLPchina/elasticsearch-sql

플러그를 설치

5.0 설치 (6.x의를 포함) 후 :elasticsearch-plugin install

버전 6.2.4을 사용 elasticsearch, 당신은 플러그인의 동일한 버전을 사용해야하기 때문에, 당신은 GitHub의에 특정 URL을 볼 수 있습니다

./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/6.2.4.0/elasticsearch-sql-6.2.4.0.zip

우리가 성공적으로 설치하지 않은 경우, 우리가 직접 다운로드 할 수 있습니다 Elasticsearch-SQL 플러그인을 압축 패키지, 다음 추출 완료 이름 바꾸기 폴더 후 sql, 배아 줄기의 설치 경로 넣어 plugins예를 들어 디렉토리를 : ..\elasticsearch-6.2.4\plugins\sql.

이 작업을 수행 한 후, 그렇지 않으면 오류가 발생하지, 서버 Elasticsearch를 다시 시작해야합니다 Invalid index name [sql], must not start with '']; ","status":400}.

카메라 프론트 엔드 인터페이스

Elasticsearch-SQL 플러그인을 사용하면 SQL 쿼리를 실행 할 수 있도록 시각적 인터페이스를 제공합니다

설치 Node.js를하고 필요 elasticsearch 5.x를 / 6.x에서,에서 다운로드 및 사이트의 압축을 풀고 , 다음 웹 프런트는 다음과 같이 끝 시작 :

wget https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/es-sql-site-standalone.zip
unzip es-sql-site-standalone.zip
cd site-server
# 需要事先安装好nodejs
npm install express --save 
node node-server.js  # 可以通过查看下面的后台运行命令使用

# 端口被占用的话修改端口号
# 后台启动

# 浏览器访问:http://ip:8080进行访问

# 右上角为es的地址和端口,最后的/不能省略

문제 :

  1. 포트 번호 점유

기본 포트는 8080 수정 될 필요가있다, 당신은 변경할 수 있습니다 site-server/site_configuration.json파일을

{
   "port":8880
}
  1. 는 X-팩 경우, 또한 사용자 이름과 암호 등의 문제에 관한 것이다. : 다음과 같은 구성을 참조하십시오
    다음 줄을 추가 ES 구성 파일 /etc/elasticsearch/elasticsearch.yml 수정 :
http.cors.enabled: true
http.cors.allow-credentials: true
http.cors.allow-origin: "/.*/"
http.cors.allow-headers: WWW-Authenticate,X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization

클러스터 다시 시작
: 예를 들어, 매개 변수로, 암호 ES 주소를 사이트 elasticsearch-SQL에 액세스 할을하고, 사용자 이름을 가지고 HTTP : // ES-SQL-사이트 : 8080 / 사용자 이름 =여보세요 및 암호 = o11eh & base_uri = HTTP :? // ES : 9200

제대로 구성되지 않은 것은 ES 주소 :

Error: "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /_sql</pre>\n</body>\n</html>\n"
  1. 올바르게 구성 http.cors하지 elasticsearch.yml :
报错提示:Error: Error occured! response is not avalible.

解决办法:
找到config文件夹下的elasticsearch.yml,在文件的末尾添加如下内容:
http.cors.enabled: true
http.cors.allow-origin: "*"
  1. 사용자 이름 또는 암호 오류 :
Error: {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request [/_sql]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication token for REST request [/_sql]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401} 
  1. 웹 페이지 주소 텍스트 상자 ES 노드 주소 조회의 연결 오른쪽 상단

마지막의 주소는 할 수있어 /작업

  1. 백그라운드에서 실행 nodejs 프로그램
# 安装forever
npm install -g forever
# 启动
forever start node-server.js    //node-server.js 是你要启动的js文件
# 查看
forever list    //会列出forever正在运行的服务脚本
# 停止
forever stop index.js   //停止服务运行
# 获取帮助信息
forever --help

용도

查询方式1:
直接在浏览器中输入sql查询语句
http://192.168.0.254:9200/_sql?sql=SELECT * FROM rforder-idx limit 6

查询方式2:
使用web界面,输入sql查询语句
http://192.168.0.254:8880/

查询方式3:
使用谷歌浏览器插件
https://github.com/shi-yuan/elasticsearch-sql-site-chrome

추천

출처www.cnblogs.com/sanduzxcvbnm/p/11583759.html