ElasticSearch最近少しずつElasticStackの勉強をしています。nogawanogawa.hatenablog.comnogawanogawa.hatenablog.comnogawanogawa.hatenablog.comnogawanogawa.hatenablog.comその中でも、コアに当たる製品がElasticSearchで、正直こいつを使いこなせるかどうかで、ほかの製品の価値もだいぶ変わるのかなと思っています。いうわけで、こちらの本で勉強してみました。検索フィールドクエリMatchTerm感想ElasticSearchとは基本的なところは過去に書いたはずなんでそちらをご参照ください。nogawanogawa.hatenablog.comnogawanogawa.hatenablog.com今回は追加でElasticSearchの特長についてまとめます。異常検知IoTデバイスのセンサデータの可視化と紹介されています。文書あるいはログデータの収集が主に想定されているようですね。Solrと比較されてたりします。比較するとこんな感じです。Banana実際使用されている量としてはこんな感じですね。db-engines.com機能については、かなり似ていますが、人気としてはもはや、Solrに圧勝している形になっています。全文検索エンジンというカテゴリではデファクトスタンダードといっていいでしょう。全文検索の仕組み全文検索はこんな感じの動作をするようです。サーチャー、インデクサー、クローラーから構成されます。インデクサは対象ドキュメントから検索キーワードとなる単語を抽出します。サーチャーは、構成したインデックスに基づいて検索機能を実現します。クローラは定期巡回などによって検索対象のドキュメントをサーチャーに渡します。インデクサによって検索対象のインデックスを構成する検索手法は索引型検索と呼ばれ、ElasticSeearchも索引型検索を行っています。論理的なデータの概念については過去にやりました。nogawanogawa.hatenablog.com物理的な概念とその用語について見ていきます。ノードElasticsearchが動作する各サーバクラスタ強調して動作するノードグループシャードインデックスのデータを異なるノードに分割保持する際の、分割したインデックスデータ群レプリカシャードを自動複製したものこの辺は、性能とか耐障害性とかの非機能要件関係の設定ですかね。書いてある感じ、こんな感じだとちゃんと動くらしいです。全文検索エンジンって言ってるくらいだから、検索が一番大事なんでしょう。検索といっても様々で、Google検索みたいなキーワードだけの検索だけではなく、ElasticSearchではより複雑な検索が可能になっています。フィールド検索に使用できるフィールドも文字列だけではなく、数値や配列、オブジェクトなど様々あります。(完全一致のマッチングに使用する)数値intfloatboolobjectarrayこの辺を組み合わせてそれぞれ適した形で検索を行うことが可能になっています。クエリ検索に使用するクエリの構成としてはこんな感じですかね。<並べ替えについての指定>,"_source":<検索結果に含めるフィールド>}query以降は検索結果のどこを使用するか(どう表示するか)を設定しています。検索の条件指定自体はqueryの値にjsonとして指定していきます。検索条件の指定クエリには大きく下記のような分類になるかと思います。基本クエリ全文検索クエリ文書が格納されているフィールドに対して検索を行うTermベースクエリ指定したフィールドに完全一致するかの判定による検索を行う複合クエリBoolクエリ複数の基本クエリの条件を組み合わせるMatchCRUDとかやり始めるときりがないので、本当に検索の基本だけ確認します。個人的に、curlべた書きでElasticSearchを操作することがないので、Pythonで書いてみます。TermMatchだと、部分一致で検索にヒットしたんですが、完全一致のケースだけを検索でヒットさせたい場合があります。いう時はフィールドをkeywordにして、Termで検索を行うことで実現できます。Term指定時はこんな感じで書くといけるみたいですね。Mappingとかで準備していない場合でも.keyword句で指定するとkeywordとして検索してくれるようです。そのため、.keyword句付けて、term句を使用すると完全一致での検索が可能になります。感想いろいろ勉強になりました。比較的簡単に使えるツールだと思うので、バンバン使って慣れていきたいと思います。Logstash)結構前にElasticSearchの勉強をしてました。nogawanogawa.hate...2019-05-01ElasticSearchとFlaskを連結させる結構前にElasticSearchをちょっとだけ勉強していました。nogaw...2019-04-01Vue.jsを使ってみた(外部APIからデータを取得する)この前はこんな感じにやってました。RouterでSPAっぽくする)この前までこんな感じになっていました。nogawanogawa.hatenab...2019-03-08Vuetify.jsを使ってみたこの間はvue.jsをとりあえず使ってみました。(1)ほしい物リスト買ってあげると中の人が喜びますはてなブログをはじめよう!nogawanogawaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。