

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 SQL 查詢您的 Amazon OpenSearch Service 資料
<a name="sql-support"></a>

您可以使用 SQL 來查詢您的 Amazon OpenSearch Service，而不是使用基於 JSON 的 [OpenSearch 查詢 DSL](https://docs.opensearch.org/latest/opensearch/query-dsl/full-text/)。如果您已熟悉 SQL，或想要透過使用它的應用程式來整合您的網域，則使用 SQL 進行查詢非常實用。執行 OpenSearch 或 Elasticsearch 6.5 或更高版本的網域支援 SQL。

**注意**  
本文件說明 OpenSearch Service 與各種 SQL 外掛程式版本，以及 JDBC 和 ODBC 驅動程式之間的版本相容性。如需基本和複雜查詢、函數、中繼資料查詢和彙總函數語法的相關資訊，請參閱開放原始碼 [OpenSearch 文件](https://opensearch.org/docs/latest/search-plugins/sql/sql/index/)。

請使用下表來查找每個 OpenSearch 和 Elasticsearch 版本所支援的 SQL 外掛程式版本。


**OpenSearch**  

| OpenSearch 版本 | SQL 外掛程式版本 | 值得注意的功能 | 
| --- | --- | --- | 
| 2.19.0 | [2.19.0.0](https://github.com/opensearch-project/sql/releases/tag/2.19.0.0) |    | 
| 2.18.0 | [2.18.0.0](https://github.com/opensearch-project/sql/releases/tag/2.18.0.0) |    | 
| 2.17.0 | [2.17.0.0](https://github.com/opensearch-project/sql/releases/tag/2.17.0.0) |    | 
| 2.15.0 | [2.15.0.0](https://github.com/opensearch-project/sql/releases/tag/2.15.0.0) |    | 
| 2.13.0 | [2.13.0.0](https://github.com/opensearch-project/sql/releases/tag/2.13.0.0) |    | 
| 2.11.0 | [2.11.0.0](https://github.com/opensearch-project/sql/releases/tag/2.11.0.0) |  新增 PPL 語言和查詢的支援  | 
| 2.9.0 | [2.9.0.0](https://github.com/opensearch-project/sql/releases/tag/2.9.0.0) |  新增 Spark 連接器，並支援資料表和 PromQL 函數  | 
| 2.7.0 | [2.7.0.0](https://github.com/opensearch-project/sql/releases/tag/2.7.0.0) |  新增 `datasource` API  | 
| 2.5.0 | [2.5.0.0](https://github.com/opensearch-project/sql/releases/tag/2.5.0.0) |    | 
| 2.3.0 | [2.3.0.0](https://github.com/opensearch-project/sql/releases/tag/2.3.0.0) |  新增 `maketime` 和 `makedate` 日期時間函數  | 
| 1.3.0 | [1.3.0.0](https://github.com/opensearch-project/sql/releases/tag/1.3.0.0) |  支援預設查詢限制大小和 IN 子句，以便從值清單中進行選擇  | 
| 1.2.0 | [1.2.0.0](https://github.com/opensearch-project/sql/releases/tag/1.2.0.0) |  新增用於視覺化效果回應格式的新協議  | 
|  1.1.0  | [1.1.0.0](https://github.com/opensearch-project/sql/releases/tag/1.1.0.0) |  支援比對功能，作為 SQL 和 PPL 中的篩選條件  | 
| 1.0.0 | [1.0.0.0](https://github.com/opensearch-project/sql/releases/tag/1.0.0.0) | 支援查詢資料串流 | 


**Open Distro for Elasticsearch**  

| Elasticsearch 版本 | SQL 外掛程式版本 | 值得注意的功能 | 
| --- | --- | --- | 
| 7.10 | [1.13.0](https://github.com/opendistro-for-elasticsearch/sql/releases/tag/v1.13.0.0) | 視窗函數的 NULL FIRST 和 LAST，CAST() 函數，SHOW 和 DESCRIBE 命令 | 
| 7.9 | [1.11.0](https://github.com/opendistro-for-elasticsearch/sql/releases/tag/v1.11.0.0) | 新增其他日期/時間函數，ORDER BY 關鍵字 | 
| 7.8 | [1.9.0](https://github.com/opendistro-for-elasticsearch/sql/releases/tag/v1.9.0.0) |  | 
| 7.7 | [1.8.0](https://github.com/opendistro-for-elasticsearch/sql/releases/tag/v1.8.0.0) |  | 
|  7.3  | [1.3.0](https://github.com/opendistro-for-elasticsearch/sql/releases/tag/v1.3.0.0) | 多個字串和數字運算子 | 
| 7.1 | [1.1.0](https://github.com/opendistro-for-elasticsearch/sql/releases/tag/v1.1.0.0) |  | 

## 範例呼叫
<a name="sql-sample"></a>

若要使用 SQL 查詢資料，請使用以下格式傳送 HTTP 請求到 `_sql`：

```
POST domain-endpoint/_plugins/_sql
{
  "query": "SELECT * FROM my-index LIMIT 50"
}
```

**注意**  
如果您的網域正在執行 Elasticsearch 而不是 OpenSearch，則格式為 `_opendistro/_sql`。

## 備註和差異
<a name="sql-diff"></a>

對 `_plugins/_sql` 的呼叫會在請求內文中包含索引名稱，因此有相同的大量、mget、和 msearch 操作的[存取政策考量](ac.md#ac-advanced)。一如以往，授權許可到 API 操作時請遵循[最低權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)的原則。

如需了解搭配使用 SQL 與精細存取控制的相關安全考量，請參閱 [Amazon OpenSearch Service 中的精細存取控制](fgac.md)。

OpenSearch SQL 外掛程式包含許多[可調整設定](https://docs.opensearch.org/latest/search-plugins/sql/settings/)。在 OpenSearch Service 中，使用 `_cluster/settings` 路徑，而不是外掛程式設定路徑 (`_plugins/_query/settings`)︰

```
PUT _cluster/settings
{
  "transient" : {
    "plugins.sql.enabled" : true
  }
}
```

對於舊版 Elasticsearch 網域，請將 `plugins` 取代為 `opendistro`︰

```
PUT _cluster/settings
{
  "transient" : {
    "opendistro.sql.enabled" : true
  }
}
```

## SQL Workbench
<a name="workbench"></a>

SQL Workbench 是一個 OpenSearch Dashboards 使用者界面，可讓您執行隨需 SQL 查詢、將 SQL 轉譯為其 REST 同等項目，然後檢視結果並儲存為文字、JSON、JDBC 或 CSV。如需詳細資訊，請參閱 [Query Workbench](https://docs.opensearch.org/latest/search-plugins/sql/workbench/)。

## SQL CLI
<a name="cli"></a>

SQL CLI 是可透過 `opensearchsql` 命令啟動的獨立 Python 應用程式。如需安裝、設定和使用的步驟，請參閱 [SQL CLI](https://docs.opensearch.org/latest/search-plugins/sql/cli/)。

## JDBC 驅動程式
<a name="jdbc-driver"></a>

Java 資料庫連接 (JDBC) 驅動程式可讓您整合 OpenSearch Service 網域與您喜好的商業智慧 (BI) 應用程式。若要下載驅動程式，請按一下[這裡](https://artifacts.opensearch.org/opensearch-clients/jdbc/opensearch-sql-jdbc-1.1.0.1.jar)。如需更多資訊，請參閱 [GitHub 儲存庫](https://github.com/opensearch-project/sql-jdbc)。

## ODBC 驅動程式
<a name="odbc"></a>

開放式資料庫連線 (ODBC) 驅動程式是適用於 Windows 和 macOS 的唯讀 ODBC 驅動程式，可讓您將 [Microsoft Excel](https://github.com/opensearch-project/sql-odbc/blob/main/docs/user/microsoft_excel_support.md) 等商業智慧和資料視覺化應用程式連線至 SQL 外掛程式。

如需安裝驅動程式的詳細資訊，請參閱 [GitHub 上的 SQL 儲存庫](https://github.com/opensearch-project/sql-odbc)。