2017年4~5月開催「ブートキャンプ特別講座」の資料になります。
Elasticsearch では、すでに日本語で全文検索する為のトークナイザーやノーマライズなどの加工処理で使用するフィルターなどがビルトインまたは、サードパーティ製のプラグインとして多数存在します。 ここでは、日本語全文検索で使用しそうなトークナイザーやフィルターなどを説明します。 主要モジュールNGram Tokenizer N-グラムを提供するトークナイザーです。Elasticsearch にバンドルされています。Japanese (kuromoji) Analysis for Elasticsearch 日本語形態素解析を提供するプラグインです。各種 Analyzer、Tokenizer、TokenFilterが含まれます。cjk_width Token Filter 半角・全角などを統一するためのフィルターです。Elasticsearch にバンドルされています。Lowercas
技術推進室の浅井です。Elasticsearchで日本語全文検索をちゃんとやるための説明、日本語でちゃんと書かれているものが無くて少々困ったので、ちゃんと書いてみます。 Elasticsearchのインストール※ 2013/12/17 13:30 インストールするJDKのバージョンを7u45から7u25に変更 ※ 2013/12/17 12:50 JDKのバージョンについての説明を追記 @johtani さん指摘ありがとうございます この記事内の説明でOracle JDK 7u45をインストールしていましたが、Apache Luceneが7u45を推奨していないため、7u25をインストールしたほうが良いようです。(後ほど記事内の説明も修正します 修正しました) http://lucene.472066.n3.nabble.com/What-is-recommended-version-of
以前少しだけElasticsearchを触った時に、自分流Elasticsearch入門 - $shibayu36->blog; というElasticsearchに入門した時のメモをまとめていた。しかし、その頃はElasticsearchを使って完全に一人で一つの機能を作るというところまではいけなかった。 最近になってまたElasticsearchを一から導入する仕事をすることになった。この時以前自分がまとめた記事を読みながらやっていたのだが、実践で一から導入するためにはこの記事だけでは知識が足りなかった。 そこで、前の記事の知識をベースに、一から導入するために少しずつ学んでいき、自分のブログにまとめるなどのことをしてきたので、今回はその締めくくりとして、知識ゼロからElasticsearchを使えるようになるために学習したことについて書いておきたいと思う。 今回書くこと・書かないこと 今
Elasticsearchを使おうとすると、まずアプリケーションの仕様にしたがってインデックス定義やマッピング定義を設計しなければならない。これはMySQLを使っていてスキーマを考えるフェーズに相当する。 この時、考えることが非常に多く、いろいろなドキュメントを参照し設計したので、今回はその手順について書いていきたいと思う。 インデックスやマッピングが何かという話は、次の記事を参考に。 Elasticsearchチュートリアル - 不可視点 Mapping and Analysis | Elasticsearch: The Definitive Guide [2.x] | Elastic また対象とするElasticsearchのversionは記事執筆時点の安定版の2.3.5とする。 今回サンプルとする例 実際のプロジェクトを参考例にすることは流石にできないので、今回はブログの記事を検索
Elasticsearchを使おうとしているとAnalyzerという概念が出てくるが、このAnalyzerという概念は最初理解することが難しかった。全文検索の仕組みを理解すれば分かるだろうと思い、https://speakerdeck.com/johtani/elasticsearchru-men?slide=5 やhttp://www.atmarkit.co.jp/ait/articles/1111/18/news148.html の記事などを読んで勉強してみたものの、こちらもいろんな言葉が出てきて非常に混乱した。例えば転置インデックス、tf-idf、トークナイズ、ストップワード、N-Gram、正規化などといった言葉が出てくる。 いろいろ調べてみて整理すると、全文検索の技術には、なぜ検索ができるかの話以外に、類似度の話、検索を高速に行うための話、あいまいな検索に対応する話など、いろんな話
こんにちは、藤本です。 7/27にAmazon Elasticsearch Serviceにバージョン2.3が追加されました。 Amazon Elasticsearch Service now supports Elasticsearch 2.3 Elasticsearch 1.5 ⇛ 2.3 上記サイトにも記載されているように1.5系から2.3系により数多くの機能追加、パフォーマンス改善が含まれています。今回は上記サイトに記載されている3つを簡単にご紹介します。詳細は各バージョンのリリースノートをご確認ください。 パイプラインアグリゲーションの追加 Elasticブログ:Out of this world aggregations Elasticsearch 2.0からアグリゲーションにパイプラインアグリゲーションが追加されました。 Bucketing Metric Pipeline *
今日はElasticsearch: The Definitive Guideを読んでいて怖いと思ったところについて書く。 学びがあったのはAvoiding Type Gotchasという部分。これによると、同一のindexを使っていて別のtypeで定義していたとしても、Luceneからはindex単位でフラットに定義があるように見えるらしい。なので、別々のtypeだけれど、同じfield名で定義していて、かつそのfield名のデータ型がそれぞれのtypeで異なっているとき、コンフリクトが起こってしまうみたい。 直感的には、typeが名前空間となり、field名は完全に独立しているというふうに思いがち。変にハマる可能性があるので覚えておく。 ちなみにParent-Childなどを利用しないなら、1 index 1 typeがオススメのようだった。 Avoiding Type Gotchasっ
先週、箱根へ小旅行した帰りのロマンスカーでぼんやりと話したElasticsearchのshardとreplicaの話です。 どこかに書いたような気もするけど、メモごとどこかになくしたらしいので、忘れないように書きとめることにしました。 shard elasticsearchのshardはluceneの1インスタンスで、 elasticsearchに自動管理されているワーカーと考えてよい。 shardを増やせば並列数があがって1ノードのパフォーマンスがあがるかもしれない。 デフォルトでは5つのshardを作ることになっているけど、設定によって変えることもできるし、インデックスごとにshardsの数を設定することもできる。 ただし、shardの数はインデックス生成後に変更できない。 replica 一方のreplicaはノードのコピー。マスターノードを除いたクラスタ内でのコピー数。 ノードを増
下記の記事の続編です。 AWS ElasticSearch Service の認証にIAM Roleを使う [PHP編] AWS ElasticSearch Service の認証にIAM Roleを使う [Python編] PHP編とPython編を書いたのですが、いろんな言語で開発していると、言語毎に流儀が違って、つらいです。 なので、AWS の認証情報を付与してくれるだけの簡単なProxyないかと思って調べたらありました。 coreos/aws-auth-proxy: HTTP proxy that signs requests for upstream AWS endpoints こんな感じで、ローカルホストでProxyを立てておくと、localhost:9200 にアクセスするだけで、AWSのElasticSearchに接続できます。 # aws elasticsearch ex
Elasticsearch 勉強会 in 京都での発表スライド (Elasticsearch 勉強会 in 大阪での発表と同じ内容です)
What is the inverted index? Indexable fields vs searchable fields The "_source" attribute Setting option "store" in mappings Set option "index" in mappings Field _all TL; DR option "store" (and the _sourcefield) controls whether a field is retrievable and option "index" controls whether it is searchable and how it's searched. It's not always easy to guess exactly what's going on inside your Elasti
マッピングタイプを使いすぎないようにする Elasticsearchでは1つのインデックスの中に複数の異なるスキーマ定義を持つことができる。このスキーマ定義をマッピングタイプという。単に「タイプ」と呼ばれる事もある。フィールドのデータタイプとは別の概念。インデックスはデータベースに、マッピングタイプはその中のテーブルに例えられる事が多いが、同じ名前のフィールドはマッピングタイプが異なっていても定義が共有されたりして、データベースのテーブルほど互いに独立していない中途半端なものになっている。(2.0より前のバージョンではタイプごとにフィールド定義が異なっていても多少使えたりしたが、2.0以降は厳密に禁止されるようになった. 参照:Conflicting field mappings) タイプが異なっていてもデータは同じLuceneインデックスの中に混ざって入ってしまうため、タイプ間で互いに影
Unlock innovation with highly secure, fully-managed Database-as-a-Service capabilities on IBM Cloud® Try a cloud database for free Navigate on IBM Cloud platform now With IBM Cloud® Database-as-a-Service (DBaaS) services, SME’s deliver and maintain ready-to-use, highly available, database instances, allowing developers and IT staff to focus on value added tasks and database software, infrastructur
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く