🍣
OpenSearchについて調べたことまとめ
OpenSearchとは?
リアルタイムのアプリケーションモニタリング、ログ分析、ウェブサイト検索などの幅広いユースケースにご利用いただける分散型、コミュニティ主導型、Apache 2.0 ライセンス、100% オープンソースの検索および分析スイートです。
参考:https://aws.amazon.com/jp/what-is/opensearch/
Document
OpenSearchではデータの保存単位をDocumentとしている.
形式はJSON.
以下のような学校のデータベースの例では,生徒一人のレコードがDocumentということである.
ID | Name | GPA | Graduation yeaar |
---|---|---|---|
1 | Jhon | 3.2 | 2024 |
Index
Indexは一般的なデータベースにおけるテーブルを指す.
ID | Name | GPA | Graduation yeaar |
---|---|---|---|
1 | Jhon | 3.2 | 2024 |
2 | Albert | 3.12 | 2023 |
3 | 2.9 | 2023 |
Field
データベースにおけるカラムの位置づけ
(ドキュメントの説明見つけられなかったので後日)
データの一貫性について
トランザクション処理をサポートしていない.
一貫性や整合性は担保されていない.
検索や分析に特化させているため.
OpenSearchでの検索
Term-level Query
以下ピックアップ- Exists : 特定のフィールドを含むドキュメントを検索できる
- Fuzzy : あいまい検索,検索語と類似するものを検索できる.
- Term : 特定のフィールドに対しての完全一致検索
- Terms : 特定のフィールドに対して複数の値を完全一致で検索
Full-Text Query
以下ピックアップ- match : 特定のフィールドの全文検索し,文字列のいずれかに一致するものを検索
Compound Query
AND・OR検索したい時に使う- must : ANDの意味
- must_not : NOTの意味
- should : ORの意味
おまけ
Fuzzy検索における類似度の計算にはDamerau–Levenshtein distanceが用いられているらしい.
2単語間のDamerau–Levenshtein distancは一方の単語を他の単語に変換するのに必要な操作の最小操作回数である.
操作は挿入,削除,置換,転置
ex.) php->pythonの場合
- 置換 : h->y (pyp)
- 挿入 : t (pytp)
- 挿入 : o (pytpo)
- 置換 : p->h (pytho)
- 挿入 : n (python)
となるので距離は5になる
Discussion