Elasticsearch instala el complemento Elasticsearch-SQL para utilizar operaciones SQL

Introducción

La sintaxis del lenguaje de consulta (DSL) de Elasticsearch es muy compleja y las funciones de consulta (filtro/consulta/coincidencia/agg/geo) son diversas, por lo que es muy inconveniente operarlo ya sea a través de API relajante o API de Java. El complemento Elasticsearch-SQL puede consultar Elasticsearch utilizando la sintaxis SQL tradicional, lo cual es muy bueno de usar.

Dirección del proyecto Elasticsearch-SQL: https://github.com/NLPchina/elasticsearch-sql

Funciones implementadas por Elasticsearch-SQL:

1) Instalación enchufable.

2) Consulta de sintaxis SQL.

3) Consultas más allá de SQL.

4) Soporte para el modo JDBC.

instalación de complementos

La versión es que utilizamos es 7.4.1. Si está utilizando una versión diferente, puede encontrar soporte en https://github.com/NLPchina/elasticsearch-sql. Por ejemplo: https://github.com/NLPchina/elasticsearch-sql/releases/download/7.6.2.0/elasticsearch-sql-7.6.2.0.zip

Cambie el usuario de elsearch, abra el directorio de instalación y ejecute el siguiente comando para instalar el complemento

[root@bogon es]#  su elsearch
[elsearch@bogon es]#  cd /home/es/elasticsearch-7.4.1
[elsearch@bogon es]#  ./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/7.4.1.0/elasticsearch-sql-7.4.1.0.zip

Es necesario reiniciar el servidor elasticsearch; de lo contrario, se informará el siguiente error al usarlo:

{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"No endpoint or operation is available at [sql]"}],"type":"illegal_argument_exception","reason":"No endpoint or operation is available at [sql]"},"status":400}

Reinicie el servicio elasticsearch

[root@bogon root]# ps -ef | grep elasticsearch  #找到进程号
[root@bogon root]# kill -9 进程号
[root@bogon root]# su elastic
[elastic@bogon root]$ ES_PATH_CONF=/home/es/elasticsearch/config sh /home/es/elasticsearch-7.4.1/bin/elasticsearch -d 

Consulta SQL de prueba:

Una vez que la instalación sea exitosa, podemos consultar ES a través de SQL.

1) Primero complete algunos datos:

POST /tvs/sales/_bulk
{ "index": {}}
{ "price" : 1000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-10-28" }
{ "index": {}}
{ "price" : 2000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-11-05" }
{ "index": {}}
{ "price" : 3000, "color" : "绿色", "brand" : "小米", "sold_date" : "2016-05-18" }
{ "index": {}}
{ "price" : 1500, "color" : "蓝色", "brand" : "TCL", "sold_date" : "2016-07-02" }
{ "index": {}}
{ "price" : 1200, "color" : "绿色", "brand" : "TCL", "sold_date" : "2016-08-19" }
{ "index": {}}
{ "price" : 2000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-11-05" }
{ "index": {}}
{ "price" : 8000, "color" : "红色", "brand" : "三星", "sold_date" : "2017-01-01" }
{ "index": {}}
{ "price" : 2500, "color" : "蓝色", "brand" : "小米", "sold_date" : "2017-02-12" }

2) Aquí hay dos formas de uso:

①. Ingrese en Dev Tools de la interfaz de kibana: GET _sql?sql=select * from tvs donde precio > 1000

②.Ingrese en la barra de direcciones del navegador: http://ip:9200/_sql?sql=select * desde televisores donde el precio> 1000

Instale la extensión de Chrome del sitio Elasticsearch-SQL

Utilice un método de consulta más conveniente:

1) Descargue el paquete ZIP extendido: https://github.com/shi-yuan/elasticsearch-sql-site-chrome

2) Descomprimir.

3) Ingrese en el navegador Chrome: chrome://extensiones/

4) Active el modo desarrollador.

5) Cargue la extensión descomprimida.

6) Cuando esté en uso, simplemente haga clic en el ícono de extensión para traducir declaraciones SQL a DSL.

pregunta

1) En la actualidad, encontré un problema: después de instalar el complemento Elasticsearch-SQL, inicio Elasticsearch e informo un error:

org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: Cannot replace existing handler for [/_sql] for method: POST
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125) ~[elasticsearch-cli-7.4.1.jar:7.4.1]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.4.1.jar:7.4.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.4.1.jar:7.4.1]
Caused by: java.lang.IllegalArgumentException: Cannot replace existing handler for [/_sql] for method: POST
        at org.elasticsearch.rest.MethodHandlers.addMethods(MethodHandlers.java:52) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.rest.RestController.lambda$registerHandler$1(RestController.java:156) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.common.path.PathTrie$TrieNode.insertOrUpdate(PathTrie.java:167) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.common.path.PathTrie$TrieNode.access$400(PathTrie.java:76) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.common.path.PathTrie.insertOrUpdate(PathTrie.java:316) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.rest.RestController.registerHandler(RestController.java:155) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.plugin.nlpcn.RestSqlAction.<init>(RestSqlAction.java:35) ~[?:?]
        at org.elasticsearch.plugin.nlpcn.SqlPlug.getRestHandlers(SqlPlug.java:35) ~[?:?]
        at org.elasticsearch.action.ActionModule.initRestHandlers(ActionModule.java:692) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.node.Node.<init>(Node.java:609) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.node.Node.<init>(Node.java:255) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.4.1.jar:7.4.1]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.4.1.jar:7.4.1]
        ... 6 more
[2019-10-31T09:38:03,170][INFO ][o.e.x.m.p.NativeController] [localhost.localdomain] Native controller process has stopped - no new native processes can be started

Aún no he encontrado una solución, si alguien la sabe, por favor háganmelo saber.

Solución temporal: elimine el directorio sql en el directorio de instalación/Complementos

Supongo que te gusta

Origin blog.csdn.net/a772304419/article/details/132391871
Recomendado
Clasificación