リンクバルの井上です。
システムのデータの規模が大きくなるにつれて必ず問題になるのが検索パフォーマンスかと思います。
今回はその改善で利用されるLuceneベースの全文検索・解析ができるElasticsearchで簡単なユーザ検索をしてみます
##ElasticSearchとは?
Elastic社提供のLuceneベースのマルチテナント・スキーマレスで
クラウドに最適化されたサーチエンジンサーバー
##ElasticSearchの導入メリット
・全文検索が高速
・導入しやすい
・プラグインが豊富
・RESTfulAPI
・データの可視化が簡単(Kibanaの導入)
##ElasticSearchを入れる
###Javaのinstall
[code lang=text] brew install java[/code]
###ElasticsSearchのinstall
今回は最新の5.0ではなく2系を使います
brew install homebrew/versions/elasticsearch24
###kibanaのinstall
ElasticSearchにversionを合わせないとエラー起こるのversion指定してinstall
[/code]
###kibanaのplugin Senseをinstall
[code lang=text] /usr/local/opt/kibana44/bin/kibana plugin –install elastic/sense[/code]
###Elasticsearchの起動
[code lang=text] /usr/local/bin/elasticsearch[/code]
port 9200で起動されるので下記でアクセスできます
http://localhost:9200
###kibanaの起動
[code lang=text] /usr/local/bin/kibana[/code]
こちらはport5602で起動します
http://localhost:5601
##検索機能を使う
###indexの作成
kibanaのSenseでsample_indexという名のindexを作成します。
““POST sample_index
###mappingの作成
[code lang=text] PUT http://localhost:9200/sample_index/_mapping/user{
"user" : {
"properties" : {
"name" : {"type" : "string" },
"message" : {"type" : "string"}
}
}
}
[/code]
####データの登録
““POST http://localhost:9200/sample_index/user
{
“name”: “user”,
“message”: “user_message”
}
““
####検索してみる
[code lang=text] GET http://localhost:9200/sample_index/_search?pretty=true{
"query" : {
"simple_query_string": {
"fields": ["name"],
"query": "test1"
}
}
}
[/code]
ユーザの検索ができました!
次回はkuromojiを使った日本語全文検索をやりたいと思います
リンクバルではエンジニアを積極募集中です。興味のある方は、こちらまでご応募ください。もちろん、社内の人間と面識があるのでしたら、直接にご連絡いただいてもかまいません。