ES SQL访问
Elasticsearch SQL Access
X-pack 是一个弹性堆栈扩展,它具有 SQL 特性来执行针对 elasticsearch 的 SQL 查询。它以表格形式返回查询结果。这些 SQL 查询在实时环境中执行。在 Elasticsearch 6.3 版本中,引入了 SQL 支持,使用户能够针对搜索引擎运行查询。
为了理解,您可以将 Elasticsearch SQL 视为翻译器。翻译人员可以理解 Elasticsearch 和 SQL 。通过利用 elasticsearch 功能,它可以轻松地实时读取和处理数据。 elasticsearch SQL查询的最大优点是,如果你已经熟悉SQL,你就不需要学习查询DSL。
我们都知道每个工具都有一些优点和缺点。因此,elasticsearch SQL 也有一些优点,具体如下——
Elasticsearch SQL 的优点
Elasticsearch SQL 有一些优秀的特性,有助于保持头脑清醒直接,为什么你应该使用它。以下是 Elasticsearch SQL 的优势-
本地集成
Elasticsearch SQL 具有本地集成,允许针对相关节点执行每个查询。它根据底层存储高效地执行这些查询。
轻量级高效
Elasticsearch SQL 是一个轻量级且高效的数据库工具。它不抽象 elasticsearch 及其搜索功能。尽管它包含并公开 SQL 以允许实时进行适当的全文搜索。
无外部部件
这是 elasticsearch 最有用的优点SQL 因为它不需要任何额外的硬件、进程或库来查询 elasticsearch。
Elasticsearch SQL CLI
Elasticsearch 提供 elasticsearch-sql-cli.bat 文件,我们可以在其中执行 SQL 查询。它提供了在 elasticsearch 中运行 SQL 查询的访问权限。这个 bat 文件存在于 bin 文件夹中。
Elasticsearch SQL features
在本章中,我们将演示我们如何执行基本的 SQL 查询。 Elasticsearch SQL 是一个丰富的平台,提供各种有助于执行 SQL 查询的功能。以下是elasticsearch SQL的特点-
有多种格式可用于响应 SQL 查询,例如 json、txt、csv、yaml 等。
Elasticsearch 提供了一个 elasticsearch-sql-cli 实用程序,它提供了一个 CLI,我们可以在其中直接执行 SQL 查询。
它还允许用户使用 elasticsearch SQL 实现额外的查询 DSL 过滤。
Elasticsearch SQL 入门
让我们以一些数据创建索引为例,开始使用 Elasticsearch SQL。在此示例中,我们将创建一个名为 college 的索引,该索引将包含课程列表。
PUT http://localhost:9200/college/
_bulk?refresh/
{
"index": {"_id": "Btech"}
}
{
"course": "Btech",
"branch": "CS",
"duration": "4 year",
"fee": "142000"
}
{
"index": {"_id": "MBA"}
}
{
"course": "MBA",
"branch": "Marketing",
"duration": "2 year",
"fee": "148000"
}
{
"index": {"_id": "Fashion Designing"}
}
{
"course": "Fashion Designing",
"branch": "Clothing and textile",
"duration": "2 year",
"fee": "210000"
}
Response
通过在elasticsearch-head插件中执行上面的查询,我们将得到与下面给出的相同的响应-
{
"took": 247,
"error": false,
"items": [
{
"index": {
"_index": "college",
"_type": "_docs",
"_id": "Btech",
"_version": 1,
"result": "created",
"forced_refresh": true,
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1,
"status": 167,
}
},
{
"index": {
"_index": "college",
"_type": "_docs",
"_id": "MBA",
"_version": 1,
"result": "created",
"forced_refresh": true,
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1,
"status": 167,
}
},
{
"index": {
"_index": "college",
"_type": "_docs",
"_id": "Fashion Designing",
"_version": 1,
"result": "created",
"forced_refresh": true,
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1,
"status": 167,
}
}
]
}
运行 SQL 查询
Elasticsearch SQL 查询以表格形式显示返回的数据。这些 SQL 查询可以使用 SQL REST API 执行。在下面的示例中,我们将创建一个 SQL 查询来从索引中获取数据,您将在其中看到它是如何执行并响应用户的。
POST _sql?format=txt
{
"query": "SELECT * FROM college WHERE fee > '145000'"
}
Response
以上查询用于获取college索引中包含fee is more的记录148000。您将得到与以下输出相同的响应-
Elasticsearch SQL CMD
Elasticsearch 包提供了一个 elasticsearch-sql-cli 命令提示符来执行 Elasticsearch SQL 查询。 elasticsearch-sql-cli 是一个批处理文件,存在于 bin 文件夹中。通过运行这个 bat 文件,一个 SQL 命令提示符将显示你可以在哪里执行 elasticsearch SQL 查询。它看起来像下面的截图:
Screenshot
在这里您可以访问在 elasticsearch 中执行 SQL 查询。因此,您无需学习查询 DSL。