扫码一下
查看教程更方便
它是一个组件,允许针对 elasticsearch 实时执行类似 sql 的查询。 我们可以将 elasticsearch sql 视为翻译器,它既理解 sql 又理解 elasticsearch,并且可以通过利用 elasticsearch 功能轻松地实时、大规模地读取和处理数据。
elasticsearch sql 的优势
put /schoollist/_bulk?refresh
{"index":{"_id": "cbse"}}
{"name": "gleandale", "address": "jr. court lane", "start_date": "2011-06-02",
"student_count": 561}
{"index":{"_id": "icse"}}
{"name": "top-notch", "address": "gachibowli main road", "start_date": "1989-
05-26", "student_count": 482}
{"index":{"_id": "state board"}}
{"name": "sunshine", "address": "main street", "start_date": "1965-06-01",
"student_count": 604}
运行上面的代码,我们得到如下所示的响应
{
"took" : 277,
"errors" : false,
"items" : [
{
"index" : {
"_index" : "schoollist",
"_type" : "_doc",
"_id" : "cbse",
"_version" : 1,
"result" : "created",
"forced_refresh" : true,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1,
"status" : 201
}
},
{
"index" : {
"_index" : "schoollist",
"_type" : "_doc",
"_id" : "icse",
"_version" : 1,
"result" : "created",
"forced_refresh" : true,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1,
"status" : 201
}
},
{
"index" : {
"_index" : "schoollist",
"_type" : "_doc",
"_id" : "state board",
"_version" : 1,
"result" : "created",
"forced_refresh" : true,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1,
"status" : 201
}
}
]
}
以下示例显示了我们如何构建 sql 查询
post /_sql?format=txt
{
"query": "select * from schoollist where start_date < '2000-01-01'"
}
运行上面的代码,我们得到如下所示的响应
address | name | start_date | student_count
-------------------- --------------- ------------------------ ---------------
gachibowli main road|top-notch |1989-05-26t00:00:00.000z|482
main street |sunshine |1965-06-01t00:00:00.000z|604
注意
- 通过更改上面的 sql 查询,我们可以获得不同的结果集。