前回のエントリでSQLクエリを試したところ、フォーマットエラーで正しく値が取得できないという問題がありました。
今回は環境をアップデート & インデックスのプロパティも修正した状態で、改めてSQLクエリを試してみます。
今回の検証から、OpenSearch 2.5.0を利用します。
SQLクエリを投げてみる
OpenSearch DashBoardのDev Toolsから実行するのが簡単です。
POST _plugins/_sql
{
"query": "SELECT * FROM rakuten_products"
}

OpenSearch標準のQuery DSLで実行すると、こんな感じです。

取得できるデータは同じですが、レスポンスの形式がかなり異なるので、単純に「Query DSLからSQLへ切り替え」というわけにはいかなそうですね。
_explain エンドポイントにクエリを投げることで、SQLからQuery DSLに変換できるようです。
https://opensearch.org/docs/latest/search-plugins/sql/sql-ppl-api
POST _plugins/_sql/_explain
{
"query": "SELECT exec_date FROM rakuten_products "
}

SQLクエリでデータが上手く取れない場合の原因調査に利用できそうですね。
ただ、自分が試したところ、WHERE句を付け加えて_explainを実行したら、ダッシュボードから応答がなくなってしまいました・・・
動作は、まだ不完全なのかもしれません。
以上
取り急ぎ、SQLクエリをOpenSearchで試してみました。という記事でした。
QueryDSLは形式が独特なので苦手意識がありましたが、SQLが利用できるのであれば使い慣れている感じがして良いですね。
ただ、レスポンス形式がかなり異なるので、そこだけ注意が必要になりそうです。
あとは、SQLクエリでどこまでQueryDSLと遜色なく利用できるのか気になるところです。
QueryDSLではできるけど、SQLクエリでは出来ない ということがあると、開発開始後に厄介なことになりそうです。