前回まででOpenSearchのインデックスにアイコンデータを組み込むところまで作成しました。
今回は追加したアイコンデータを検索できるように、Goで作成しているサーバーサイドの更新を行います。
クエリの形式を変更する
今まではQueryDSLを利用してクエリを構築していましたが、これをプログラムで作成しようとするとなかなか苦労しそうで、いい方法が思いつきませんでした。
ということで、今回から「Query String」という形式を利用してクエリを発行することにしました。
https://opensearch.org/docs/latest/query-dsl/full-text/query-string/
この形式であればJSONの複雑な構造ではなく、シンプルな文字列でクエリを表現できそうだったため、この形式を利用することにしました。
クエリ生成部分の修正
queryMainStr := `{
"size": 20,
"query": {
"query_string": {
"query": "%s"
}
}
}`
query_stringを利用し、%sの部分をクエリストリングに置き換える。
QueryDSLよりもシンプルにすることが出来ました。
queryStr := ""
if searchRequest.Keyword != "" {
queryStr += "work_title:" + searchRequest.Keyword
}
if searchRequest.AgeLimitType != "" {
if queryStr != "" {
queryStr += " AND "
}
queryStr += "work_icons:" + searchRequest.AgeLimitType
}
クエリ文字列を作成する部分です。
条件が2つしか存在しないので力技でANDをつけたりして組み立てています。
条件が今後増えてくれば、もう少しクエリ組み立て部分は考える必要が出てきそうですね。
組み立てたクエリは「fmt.Sprintf(クエリ文字列, クエリ式)」を利用して%sの部分を置き換えています。
POSTMANから実行してみる
POSTMANから実行してみます。
今回はクエリパラメータに条件を設定し、GETパラメータでサーバーに渡します。
実行した結果はこちらになります。
query_stringを利用して検索結果を取得することが出来ました。
以上です
今回はサーバーサイドの改修を行いました。
次回はフロントエンドの開発に入ろうかと思います。
created by Rinker
¥3,498
(2024/10/27 14:01:23時点 楽天市場調べ-詳細)
created by Rinker
¥3,278
(2024/10/27 14:11:47時点 楽天市場調べ-詳細)