Elasticsearch
概要 以前Bool Query と Dis Max Query の違いについて書きました。 今回はその中で出てきたMulti Match Queryのtypeの違いについて書きます。 どれも複数のフィールドに対して実行するクエリですが、それぞれ用途が異なります。 環境 Elasticsearch 6.6.0 …
概要 Kibanaを5.xにメジャーアップデートする際、Elastic社公式のdocker imageも用意されたのでdocker-composeでまとめて作ることにしました。 その際調べたこと、ハマったことをまとめます。 環境 docker 17.03.1-ce docker-compose 1.11.2 Elasticsearch 5…
概要 以前Prefix Query の注意 - Carpe Diemで述べたように、PrefixQueryはsearch queryがnot_analyzedになるので意図しない結果になることがあります。 一方で前方一致は検索の利便性を向上させる上でメリットが大きいので、入れておきたい要素でもあります…
概要 SEO対策という言葉があるように、Googleの検索結果は単なる文字列の一致率ではなくホームページ自体にスコアが付けられており、それを元に検索の順位が決まります。 今回はElasticsearchでそのようなスコア順に並べる方法を説明します。 環境 Elasticse…
概要 以前はMongoRiverを使う - Carpe Diemで紹介したようにRiverという機能を使って同期を実現させていました。 しかしながらElasticsearchがRiverを廃止することを決め、バージョン2.x以降は使うことができなくなりました。 そこで調べてみて挙がったのは…
概要 検索システムを扱う上で文字列の正規化は非常に重要な要素です。 大抵納品されるデータはフォーマットがバラバラ(全角半角、カタカナひらがなが統一されないなど)なので、この正規化によってある程度統一させることで検索の精度を向上できます。 環境…
概要 Elasticsearchの日本語の形態素解析をする際に利用されるkuromojiは非常に便利ですが、その辞書であるIPADICは更新が止まっているためやや古い状態です。 その辞書を更新してくださった方がいらっしゃり、neologdとして公開されているためそれを導入し…
概要 ElasticsearchのPrefix Query を使用する時に詰まったところをまとめました。 環境 Elasticsearch 2.3.2 通常の利用方法 マッピング・データ用意 マッピングを設定します。 項目 設定値 インデックス名 test タイプ名 internet フィールド名 name で設…
概要 Bool QueryとDis Max Queryの違いが曖昧だったのでちゃんと調べました。 環境 Ubuntu 14.04 Elasticsearch 2.2.0 データ投入 curl -s -XPOST localhost:9200/my_index/my_type/_bulk -d ' {"index": {"_id": "1"}} {"title": "Quick brown rabbits", "b…
概要 前回と同じく、検索した時に「部分一致させたいけど、上位に出るのは前方一致してるものがいいなぁ」といった時の対応。 今回はcopy_toを使います。 元々の経緯としてはフィールド構造が異なる複数の対象に対してTopHitsクエリを用いていたのですが、何…
概要 Kibanaを使う上でデータ容量が問題になってきます。 可視化やログ調査に必要な分のみ残し、古いインデックスを定期的に削除する必要があります。 Curatorはそのためのツールです。 環境 Elasticsearch 2.2.0 Curator 3.4.1
概要 前回は1.x系のプラグインの作成方法を書きました。 今回は2.x系の作り方を勉強します。 完成形は以下 github.com 環境 Ubuntu 14.04 Elasticsearch 2.2.0 1.xとの違い 1.xはmaven、2.xはgradleでやるのが主流 2.xからAbstractPlugin => Pluginに変更 pl…
概要 Elasticsearchのプラグインの作成方法です。 1.xと2.xで色々と変更があるので、まずは1.xの作り方を学んでみます。 完成形は以下 github.com 環境 Ubuntu 14.04 Elasticsearch 1.4.5 プロジェクト作成 mavenからスケルトンコードを生成することができる…
概要 Kibanaをログ可視化&検索として扱う上でいくつかの問題が生じたので、その時の対処方法をまとめます。 ログ可視化という用途であればレスポンス速度などの優先度は下げられるため、以下の対応が可能になります。 環境 Ubuntu 14.04 Elasticsearch 2.1.…
概要 Nginxのアクセスログを用いて可視化の流れをまとめます。 mappingは手動で設定します。 環境 Ubuntu 14.04 fluentd 0.12.19 fluent-plugin-elasticsearch 1.3.0 Nginx 1.4.6 Elasticsearch 2.1.1 Kibana 4.3.1 構成 IP 名前 役割 192.168.33.100 web We…
概要 可視化ツールとして有名なKibanaについてです。 Kibana 4.3 では Elasticsearch 2.x が必要なのでインストール方法をまとめました。 環境 Ubuntu 14.04 Elasticsearch 2.1.1 Kibana 4.3.1 Elasticsearch2.xのインストール ElasticSearch 2.x のインスト…
概要 メジャーバージョンアップでちょこちょこ変更点があるのでその対応を含めたインストール方法です。 環境 Ubuntu 14.04 Elasticsearch 2.1.0 Java 1.8.0_66 Java8のインストール $ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update …
概要 Aggregationの結果にフィルタをかけたいと思ったら、使うクエリによって検索結果とAggsの結果が異なったのでそのまとめ。 環境 Ubuntu 14.04 Elasticsearch 1.6.0 簡単な区別 フィルタ 検索結果をフィルタする aggsの結果をフィルタする Filtered Query…
概要 検索した時に「部分一致させたいけど、上位に出るのは前方一致してるものがいいなぁ」といった時の対応。 検索文字 デフォルト 希望 fa faterefactorfacebook fatefacebookrefactor 環境 Ubuntu 14.04 Elasticsearch 1.5.0
Aggregationって? FacetsAPIの上位版です。集計する機能です。SQLならGROUP BYに相当します。 maxやavgといった複雑な条件で集約を行えます。 大谷さんの以下のスライドが非常にわかりやすいです。
概要 Vagrant上にElasticsearchのクラスタを構築してfailoverを検証してみます。 環境 Ubuntu 14.04 Elasticsearch 1.4.4 Vagrant 1.7.2 以下の3台でクラスタを構築します。 ノード IP web1 192.168.33.10 web2 192.168.33.11 web3 192.168.33.12
概要 MongoDBのデータをElasticSearchに流し込むMongoDB River Pluginを扱います。 あるデータに対して検索機能を追加したいけど、MongoDBで全文検索はちょっと。。という時に便利です。 環境 Ubuntu 14.04 MongoDB 2.6.7 Java 1.8.0_31 ElasticSearch 1.4.2…
概要 仕様変更でフィールドの追加やマッピングの変更など発生しますが、Elasticsearch に関わらずほとんどの検索エンジンは検索・インデックス仕様の変更をする際、インデクスを再作成する必要があります。 エイリアスを利用すると、その変更をダウンタイム…
概要 Elasticsearchでアナライザを設定する方法です。 N-gramや形態素解析などありますが、今回は単に設定する方法だけを紹介します。設定方法は主に以下の3通りがあります。 configで設定する インデクス全体に設定する 各フィールド個別に設定する これら…
概要 簡単に全文検索を可能にしてくれるElasticSearchの実装です。 機能が多い分説明も増えるので少しずつ紹介していこうと思います。 環境 Ubuntu 14.04 ElasticSearch 1.7.2 Java 1.8.0_60