Elasticsearch installe le plug-in Elasticsearch-SQL pour utiliser les opérations SQL

Introduction

La syntaxe du langage de requête (DSL) d'Elasticsearch est très complexe et les fonctions de requête (filtre/requête/match/agg/geo) sont diverses, et il est très gênant qu'elle soit exploitée via une API restful ou une API Java. Le plug-in Elasticsearch-SQL peut interroger Elasticsearch en utilisant la syntaxe SQL traditionnelle, qui est très pratique à utiliser.

Adresse du projet Elasticsearch-SQL : https://github.com/NLPchina/elasticsearch-sql

Fonctions implémentées par Elasticsearch-SQL :

1) Installation du plug-in.

2) Requête de syntaxe SQL.

3) Requêtes au-delà de SQL.

4) Prise en charge du mode JDBC.

installation du plugin

La version es que nous utilisons est la 7.4.1, si vous utilisez une version différente, vous pouvez trouver de l'aide sur https://github.com/NLPchina/elasticsearch-sql. Tel que : https://github.com/NLPchina/elasticsearch-sql/releases/download/7.6.2.0/elasticsearch-sql-7.6.2.0.zip

Changez d'utilisateur elsearch, ouvrez le répertoire d'installation et exécutez la commande suivante pour installer le plugin

[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

Le serveur elasticsearch doit être redémarré, sinon l'erreur suivante sera signalée lors de son utilisation :

{"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}

Redémarrez le service 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 

Tester la requête SQL :

Une fois l'installation réussie, nous pouvons interroger ES via SQL.

1) Remplissez d'abord quelques données :

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) Voici deux façons d'utiliser :

①. Entrez dans les Dev Tools de l'interface Kibana : GET _sql?sql=select * from tvs which price > 1000

②.Saisissez dans la barre d'adresse du navigateur : http://ip:9200/_sql?sql=select * à partir des téléviseurs dont le prix est > 1000

Installez l'extension Chrome du site Elasticsearch-SQL

Utilisez une méthode de requête plus pratique :

1) Téléchargez le package ZIP étendu : https://github.com/shi-yuan/elasticsearch-sql-site-chrome

2) Décompressez.

3). Entrez dans le navigateur Chrome : chrome://extensions/

4) Activez le mode développeur.

5) Chargez l'extension décompressée.

6) Lors de l'utilisation, cliquez simplement sur l'icône d'extension pour traduire les instructions SQL en DSL.

question

1) Actuellement, j'ai rencontré un problème. Après avoir installé le plug-in Elasticsearch-SQL, je démarre Elasticsearch et signale une erreur :

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

Je n'ai pas encore trouvé de solution, si quelqu'un le sait, n'hésitez pas à me le faire savoir.

Solution temporaire : supprimez le répertoire sql sous le répertoire d'installation/Plugins

Je suppose que tu aimes

Origine blog.csdn.net/a772304419/article/details/132391871
conseillé
Classement