ElasticSearch SQL 访问

  • SQL 访问

    它是允许对 Elasticsearch 实时执行类似SQL的查询的组件。您可以将Elasticsearch SQL视为一种翻译器,它既可以理解SQL又可以使用Elasticsearch,并且可以利用Elasticsearch功能轻松地进行大规模实时读取和处理数据。
  • Elasticsearch SQL的优点

    • 它具有本机集成-根据基础存储,对相关节点高效地执行每个查询。
    • 无需外部零件-无需额外的硬件,流程,运行时或库即可查询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查询

    以下示例显示了如何构建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查询,您可以获得不同的结果集。