📑

自分用メモ_Amazon_OpenSearch_ServiceのDQLについて

に公開

概要

OpenSearchで使える検索について自分用メモとして簡単に残しておく。

単語を適当に入れるとインデックスされてる項目から部分一致で検索される。
インデックスされてる項目の調べ方
左上のハンバーガーメニューをクリック。

出てくる「Dev Tools」を押す。

出てくるコンソールで以下を入力するとインデックスの一覧が出てくるので

GET /_cat/indices?v

以下のコマンドを打って詳細の情報を取得する。

GET /インデックス名/_mapping

取得されるデータの見方
1.type: フィールドのデータ型

  • text: 全文検索用のテキスト(トークン化される)
  • keyword: 厳密一致用の文字列(トークン化されない)
  • date: 日付データ
  • long, integer, float: 数値型
  • boolean: 真偽値
  • object: JSONオブジェクト
  • nested: ネストされた配列オブジェクト

2.index: インデックス付けするかどうか(項目がない場合はtrue扱い)

  • true: インデックス付けする(検索可能)
  • false: インデックス付けしない(検索不可)

3.analyzer: テキスト分析に使うアナライザー

  • standard: 標準アナライザー
  • english: 英語用アナライザー
  • カスタムアナライザー名など

4.fields: マルチフィールド設定

  • 同じデータに複数の異なるインデックス設定を適用できる
    5.properties: オブジェクト型やネスト型フィールドの中の項目

その他検索方法
項目部分検索

項目名: "検索文字列"

項目部分検索AND(大文字小文字は区別しないのでandでも可)

項目名: "検索文字列" AND 項目名: "検索文字列2"

項目部分検索OR(大文字小文字は区別しないのでorでも可)

項目名: "検索文字列" OR 項目名: "検索文字列2"

細かいことはこっち

「Dev Tools」で検索もできるのでメモ。詳細はこっち
以下、全件取得。

GET _search
{
  "query": {
     "match_all": { 
     }
  }
}

以下、部分一致。

GET _search
{
  "query": {
     "match": { 
       "項目名": "検索文字列"
     }
  }
}

以下、ブーリアンマッチ。「hoge fuga a」のような検索文字が入力された場合、hoge,hugaについては部分一致、aについてはaxxxという単語で部分一致。

GET _search
{
  "query": {
     "match_bool_prefix": { 
       "項目名": "検索文字列"
     }
  }
}

Discussion