Intelij 是 Java 开发者的首先开发工具。很多开发者也使用 Java 来集成 Elasticsearch。IntelliJ IDEA 的每个方面都旨在最大限度地提高开发人员的生产力。智能编码辅助和符合人体工程学的设计共同使开发不仅富有成效,而且令人愉快。而 InteliJ Elasticsearch 插件一个专业的 GUI 客户端转为访问 Elasticsearch 而设置的。IntelliJ Elasticsearch 是 JetBrains IDE 的高级插件。 通过更快的数据探索、查询生成、书签等加速你的 Elasticsearch 工作流程。IntelliJ Elasticsearch 插件允许你连接到 Elasticsearch 或 Kibana,浏览和编辑你的数据并执行 REST API 请求。它有如下的功能:
在本文的下面部分,我将描述如何使用这个插件并进行一些展示。我将使用最新的 Elastic Stack 8.3.2 来进行展示。
如果你还没有安装好自己的 Elasticsearch 及 Kibana,请参考如下的文章来进行安装:
特别指出的是:我们选择安装最新的 Elastic Stack 8.3.2。
我们在地址 Download IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains 根据自己的平台下载最新的 InteliJ 来进行安装。我下载 Ultimate 试用版本,并在 Ubuntu 上进行安装。我们下载它的安装包,解压至一个安装目录,并执行如下的命令来进行启动:
./bin/idea.sh


在上面,我们搜索 Elasticsearch 插件,并点击 Install 按钮:




我们接着创建一个 Java 样本项目:

我们按照如下的选择来创建 Elasticsearch 连接:


我们选择更新 Elasticsearch 驱动:


我们首先删除已经安装的比较旧的驱动。我们接下来到地址 Download JDBC Client | Elastic 下载最新版本的驱动 x-pack-sql-jdbc-8.3.2.jar,或者去地址 https://www.elastic.co/downloads/past-releases 下载之前的版本。请注意:必须和 Elasticsearch 的安装版本相同。我们点击上面的 + 符号来上传最新的驱动:

接下来,我们找到 Elasticsearch 的安装目录,并查看它的安装证书:
- parallels@liuxg:~/elastic/elasticsearch-8.3.2$ pwd
- /home/parallels/elastic/elasticsearch-8.3.2
- parallels@liuxg:~/elastic/elasticsearch-8.3.2$ ls ca/
- ca.crt ca.key
关于这些证书的情况,你可以阅读我之前的文章:
我们把上面的证书的路径输入到如下的配置中:

我们需要记得证书的密码。我们接着回到之前的 General 页面继续配置:

点击上面的 Test Connection:

在上面我们可以看到有一个错误信息。它表明我们的 Elasticsearch 的 License 有问题。由于这个功能是白金版功能,我们需要启动试用。更多关于 Elasticsearch 版权的信息,请在地址 订阅 | Elastic Stack 产品和支持 | Elastic 进行查看。
我们可以在 Kibana 里执行如下的命令:
POST /_license/start_trial?acknowledge=true&pretty
或者直接到 Stack Management 中启动白金版试用功能:

这样我们就启动了白金版试用功能。
我们再次来测试我们的连接:

这次显然我们的连接是成功的。 我们甚至可以看到远程的 Elasticsearch 集群的索引:

关于如何建立远程集群的连接,请参考我的另外一篇文章 “Elasticsearch:通过 JDBC 使用 SQL 来查询索引 - DBeaver”。
我们按照如下的步骤来导入 Kibana 自带的例子索引:


我们通过这样的操作就把 Kibana 自带的索引 kibana_sample_data_flights 及 kibana_sample_data_logs 写入到 Elasticsearch 中了。
我们按照如下的方式来创建一个新的 twitter 索引:
- PUT twitter
- {
- "mappings": {
- "properties": {
- "DOB": {
- "type": "date"
- },
- "address": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword",
- "ignore_above": 256
- }
- }
- },
- "age": {
- "type": "long"
- },
- "city": {
- "type": "keyword"
- },
- "country": {
- "type": "keyword"
- },
- "message": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword",
- "ignore_above": 256
- }
- }
- },
- "province": {
- "type": "keyword"
- },
- "uid": {
- "type": "long"
- },
- "user": {
- "type": "text",
- "fields": {
- "keyword": {
- "type": "keyword",
- "ignore_above": 256
- }
- }
- }
- }
- }
- }
- POST _bulk
- {"index":{"_index":"twitter","_id":1}}
- {"user":"张三","message":"今儿天气不错啊,出去转转去","uid":2,"age":20,"city":"北京","province":"北京","country":"中国","address":"中国北京市海淀区","DOB": "1999-04-01"}
- {"index":{"_index":"twitter","_id":2}}
- {"user":"老刘","message":"出发,下一站云南!","uid":3,"age":22,"city":"北京","province":"北京","country":"中国","address":"中国北京市东城区台基厂三条3号", "DOB": "1997-04-01"}
- {"index":{"_index":"twitter","_id":3}}
- {"user":"李四","message":"happy birthday!","uid":4,"age":25,"city":"北京","province":"北京","country":"中国","address":"中国北京市东城区","DOB": "1994-04-01"}
- {"index":{"_index":"twitter","_id":4}}
- {"user":"老贾","message":"123,gogogo","uid":5,"age":30,"city":"北京","province":"北京","country":"中国","address":"中国北京市朝阳区建国门", "DOB": "1989-04-01"}
- {"index":{"_index":"twitter","_id":5}}
- {"user":"老王","message":"Happy BirthDay My Friend!","uid":6,"age":26,"city":"北京","province":"北京","country":"中国","address":"中国北京市朝阳区国贸","DOB": "1993-04-01"}
- {"index":{"_index":"twitter","_id":6}}
- {"user":"老吴","message":"好友来了都今天我生日,好友来了,什么 birthday happy 就成!","uid":7,"age":28,"city":"上海","province":"上海","country":"中国","address":"中国上海市闵行区", "DOB": "1991-04-01"}
我们可以看到更新后的视图如下:

我们可以做如下的查询:


更多相关功能请观看视频:IntelliJ Elasticsearch - Professional GUI Client for Elasticsearch