検索ツールElasticsearch -立ち上げ手順
前回Elasticsearchの概要を述べたので、今回は実際の利用について述べる。(以下のES及びKibanaのバージョンは6.8.13にて説明する) Elasticsearchの立ち上げ自体はシンプルで、先述のFESSの場合と同様Javaを導入して、ダウンロードページからzipファイルをダウンロードして、解凍したフォルダのトップからコマンドラインツールで「bin/elasticsearch」を実行するだけである。実行後にブラウザを立ち上げ、「localhost:9200」を実行して以下のようなjsonファイルが見えればelastcisearchの立ち上げ完了を確認できる。
{
"name" : "2rIe_dZ",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ALXr6XQ-R3OCMCZP-iRAdw",
"version" : {
"number" : "6.8.13",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "be13c69",
"build_date" : "2020-10-16T09:09:46.555371Z",
"build_snapshot" : false,
"lucene_version" : "7.7.3",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
次にElasticsearchのデータ確認、簡易なデータのインポートのツールとして使うためKibanaを利用する。kibanaも同様にダウンロードページからzipファイルをダウンロードして、解凍したファルダのトップからコマンドラインで「bin/kibana」を実行すると立ち上げることができる。こちらも実行後にブラウザを立ち上げ「localhost:5601」を入力してkibanaのトップページが現れれば立ち上げが確認できる。更にサイドメニューにある「Discover」を押すと、elastcisearchに格納してあるデータが確認できる(elasticsearchとkibanaとの接続も確認できる)
検索用途として使うには、検索UIを加える必要がある。elastcisearchで使うことのできる検索UIとしては、SearchUI、ReactiveSearch等いくつかの利用可能なモジュールがある。ここではReactivesearchを使った検索システムの立ち上げについて紹介する。
ReactivesearchはReactを利用した検索UIで、ReactjsやVue.jsのコンポーネント(MaterialUI等)を利用して、Elasticsearchとの接続は「elasticsearchのホストURL」「検索対象のインデックス名」「検索対象のフィールド名」を設定するだけで、後は検索のロジックを組むだけで済む簡単に検索UIを構築可能なフレームワークである。
elasticsearchに導入するデータとしては、単純な検証であれば結果をCSVにして検索することが、クエリもシンプル(=検索UIも特別なものを準備しなくても良い)に構成でき、スピーディーな検証につながる。複雑な要件を満たすためには、JSONファイルを入力として用いることもできるが、クエリも複雑になりUIの構築にも時間がかかる。
ElasticsearchではDocument(検索データ)の登録時にindex(データベース)が作成され、そのIndexをどのように登録するかを定義するのがMapping(RDBだとMappingはテーブルスキーマになる)になる。このMapping情報を定義するデータの型として、string, date, long, double, boolean, ipなどのシンプルな型、JSONのような構造を持つ性質のための object, nested型、geo_pointや geo_shape、completion などの特殊型がある。これらのMappingは、Elasticsearchではデータの導入時に自動的に定義される。(ドキュメント等の全文検索の場合は、ほぼstringに定義される) これらMappingは一度生成されると更新できないため、自動で生成されては困るデータ(例えばDateデータ等)は、データをindexする際に指定しなければならない。
以上を踏まえて、実際にCSVデータを導入するシンプルな手法を紹介する。
(1) Elasticsearch,Kibanaを立ち上げる。(前述)
(2)Kibana画面の左側のメニューの中から「Machine Learning」を選択。「Import Data (update file)」を選択し、「Select or drag and drop a file」から入力したいCSVファイルを選択、File contetns, Summary, File Stat等の入力したCSVファイルの情報が表示される。
(3) 最下部右側に表示される「import」ボタンを押す。Import dataの下にsimple/Advancedの選択、Index nameを入力するボックス等が表示される。Mapping Dataを事前に指定する為に「Advanced」を選択するとMapping Dataが表示される。変更したいMapping Data(例えばtypeがkeywordになっているDateデータのtypeをdateにする)を書き直す。また「Index name」のボックス内にIndex name(データベースの名前:UIで利用)を記入する。以上を実行すると「Import」ボタンが利用可能となり、ボタンを押すと、Indexデータが自動で生成され始める。
(4) データ生成が完了したら、左側のメニューから「Discover」を選択すと、生成されたindexデータが表示されるので、データやfiledを確認し、所望のデータとなっているかどうかを確認する。(Elasticsearch部の設定終了)
次に検索UIの設定を行う。今回はReactivesearchを利用する。ReactivesearchはReactベースで構築されている為、まずnpm(node.jsのパッケージマネージャー及びレポジトリ)を導入する必要がある。npmのインストールはnodeのサイトにてインストーラーをダウンロードする方法(windows/mac共)、macの場合はhomebrewでもインストールできる。
npmがインストールできたら、nodeのアプリケーションテンプレートを任意のフォルダー下に生成する。
(コマンドラインで”npx create-react-app my-app” ;my-appは作成したいapp名)
生成したnodeアプリテンプレートにreactivesearchモジュールをインストールする(コマンドラインで生成したフォルダ(my-app)をトップに指定して、”npm install @appbaseio/reactivesearch”を入力)生成されたフォルダー内には、”node_moduleフォルダー””package.json””srcフォルダー””publicフォルダー”等が生成される。この時点で”npm start”を実行するとブラウザのlocalhost:3000でReactの画面が立ち上がる。
次回以降でreactivesearchを使った実際のUI構築について述べる。
コメント
[…] (前回の続き) 実際のreactivesearchのコード例を以下に示す。 […]
[…] 次回は、Elasticseachの簡単な立ち上げについて解説する。 […]
[…] 検索ツールElastic Search(2) ElasticSearchの立ち上げ […]
[…] 検索ツールElastic Search(2) ElasticSearchの立ち上げ […]
[…] 検索ツールElastic Search -ElasticSearchの立ち上げ […]
[…] ロサービスシステム以外にも広く適用可能となる。ElasticStashを用いた検索エンジンへの活用は”検索ツールElasticsearch -立ち上げ手順“等に詳細述べているのでそちらも参照のこと。 […]
[…] Mapからのデータの抽出 […]
[…] 上記に関する詳細な設定手順は”検索ツールElastic Search -ElasticSearchの立ち上げ“等も参照のこと。 […]