Elasticsearch本おすすめ3選|日本語全文検索・Analyzer・Mapping・Query DSLの実務

PR:この記事にはアフィリエイトリンクが含まれます。

Elasticsearchに文書を登録したのに、「東京」で検索しても「東京都」を含む結果が出ない。日本語検索では、索引に登録する語の分け方が検索結果を大きく左右します。

Analyzerやmapping、Query DSL。専門用語が並びますが、確認するのは検索語の処理、フィールドの型、クエリ条件です。ひとつずつ追えば整理しやすいですよ。

紹介する三冊の価格は公式定価を参考に記載しています。実売価格は販売時期や店舗で変わります。

書名主な内容分量・対象版参考価格
Elasticsearch NEXT STEPElasticsearch NEXT STEP日本語全文検索、Sudachi96ページ・2019年1,980円(税込)
Elastic Stack実践ガイド[Elasticsearch/Kibana編]Elastic Stack実践ガイド[Elasticsearch/Kibana編]Mapping、クエリ、Analyzer、Kibana336ページ・7.63,300円(税込)
Elasticsearch実践ガイドElasticsearch実践ガイドMapping、クエリ、Analyzer、運用288ページ・63,080円(税込)

日本語検索の壁

全文検索では、入力文字列をAnalyzerで分割・変換し、その結果を索引の語と照合します。登録時と検索時で処理がずれると、必要な文書を取りこぼすことがあります。

英語は単語の間に空白が入る場合が多い一方、日本語では「検索の仕組みを考える」のように文字が続きます。語の境目の決め方が検索結果を左右します。

「東京」と「東京都」を同じ検索で拾うか、別の語として絞り込むか。画面に入力される言葉と文書の表記を並べると、必要な処理が見えてきます。

略称や表記ゆれ、全角・半角、英数字の大文字・小文字でも結果は変わります。同じ語として扱う表記を整理し、それに合わせて分割設定も調整しましょう。

Analyzerの役割

Analyzerは、文字を整え、語に分け、必要に応じて語形を変える処理を組み合わせます。一般にはcharacter filter、tokenizer、token filterの三段階です。それぞれの担当を知ると、調整箇所を見つけやすくなります。

Tokenizerが文章を語の単位に分けます。その後、token filterが小文字化やストップワード除去などを処理します。日本語の形態素解析には、Elasticsearch本体の版に合ったプラグインが必要になる場合もあります。

インデックス時のAnalyzerと検索時のsearch analyzerは、別々に設定できます。同義語を検索語側だけ広げれば、文書登録の処理を変えずに検索の挙動を調整できます。

SudachiなどのTokenizerを組み込むときは、Elasticsearchの版とプラグインの対応関係を確認してください。設定例をそのまま使わず、実際の環境に合う組み合わせにすることが大切です。

Mappingの設計

Mappingは、フィールドごとの型や検索方法を定める設計図です。文章検索にはtext、完全一致や集計にはkeywordを使います。同じ値を両方の目的に使う場合は、multi-fieldが便利です。

たとえばtitleを形態素解析で検索し、並べ替えや完全一致にも使いたいとします。titleをtext型にし、配下にkeyword型のrawフィールドを設ける構成が考えられます。

{"title":{"type":"text","analyzer":"ja","fields":{"raw":{"type":"keyword"}}}}のように役割を分けると、「検索語を含むか」と「タイトルが完全一致するか」を別々に表現できます。

型の自動推測に任せると、数値や日付、文字列が意図と違う型になることもあります。statusや公開日など、検索条件や並べ替えに使う値は、あらかじめ型を明示しておくのが堅実です。

Query DSLの形

Query DSLではJSON形式で検索条件を記述します。タイトルや本文の全文検索にはmatchを使い、検索語をAnalyzerで処理してから索引の語と照合します。

{"query":{"match":{"title":"東京駅"}}}は、titleに対して「東京駅」を検索する基本形です。検索語がどう分割されるか分かっていれば、結果が0件のときも原因を追いやすくなります。

複数の条件をまとめるにはboolを使います。mustに全文検索、filterに公開状態や日付範囲を置けば、関連度で探す条件と対象を絞る条件を整理して書けます。

termはAnalyzerを通さず、値そのものに照合するクエリです。keyword型の完全一致などに使えますが、text型では狙いどおりに当たらない場合があります。フィールドの型とクエリを一緒に確認しましょう。

NEXT STEPの焦点

『Elasticsearch NEXT STEP』はインプレス NextPublishingから2019年に刊行された印刷書籍で、96ページです。著者は樋口慎、山本大輝、佐々木峻、束野仁政の各氏。アクロクエストテクノロジー株式会社が監修しています。

日本語全文検索の課題と対策に加え、Sudachiの紹介や使い方、Tipsを扱います。Elasticsearchの基本操作を少し経験し、日本語検索の実例を学びたい読者に合う一冊です。

参考価格は1,980円(税込)。実売価格は時期や店舗で変わります。出版社の商品紹介には対象バージョンの記載がないため、設定例を適用する際は利用環境とプラグインの対応版を確認してください。

Elasticsearch NEXT STEP

Elasticsearch NEXT STEP

インプレス NextPublishing

Amazonで見る

6系実践ガイド

『Elasticsearch実践ガイド』は2018年刊、288ページで、対象はElasticsearch 6です。参考価格は3,080円(税込)。実売価格は販売時期や店舗によって異なります。

インデックス管理やMapping、各種クエリ、全文検索とAnalyzerを解説します。さらにAggregationやスクリプティング、ログ収集、クラスタ運用も扱い、検索周辺の基礎まで読み進められます。

Elasticsearch 6のドキュメントタイプを含む設計は、後のバージョンではそのまま使えない部分があります。既存の6系環境を理解するには役立ちますが、新しい環境では概念を押さえ、記法や設計を現行版に合わせてください。

Elasticsearch実践ガイド

Elasticsearch実践ガイド

インプレス

Amazonで見る

7.6実践ガイド

『Elastic Stack実践ガイド[Elasticsearch/Kibana編]』は2020年刊、336ページです。Elastic Stack 7.6を基に、Mapping定義の管理やクエリの基本操作を取り上げています。

全文検索とAnalyzer、Aggregation、スクリプティング、Kibanaでの可視化、クラスタ運用を扱います。検索機能から周辺の仕組みまで、広く学びたい読者に向いた内容です。

参考価格は3,300円(税込)で、実売価格は時期と店によって変わります。対象版は刊行時の7.6です。現行環境に設定例を使う際は、APIや構成の違いを公式ドキュメントで確認しましょう。

Elastic Stack実践ガイド[Elasticsearch/Kibana編]

Elastic Stack実践ガイド[Elasticsearch/Kibana編]

インプレス

Amazonで見る

結論

日本語検索とSudachiの具体例を優先するなら、『Elasticsearch NEXT STEP』がおすすめです。96ページにテーマがまとまり、Elasticsearchの基本を少し経験した人が日本語検索の実例を学べます。

Mapping、Query DSL、Analyzerを広く学ぶなら、『Elastic Stack実践ガイド[Elasticsearch/Kibana編]』を選ぶのが堅実です。対象版は刊行時の7.6。現行版との差を確認しながら読みましょう。

『Elasticsearch実践ガイド』は、Elasticsearch 6の既存環境を扱う人に購入価値があります。現行版で新たに構築する人には7.6編をすすめます。実装時は現行の公式資料も併用してください。

【2026年版】Amazonで買えるおすすめノートPCランキング!コスパ最強のモデルはこれだ
DELLのノートパソコンがテーブルの上に置いてある画像

Amazon の PC をスコア化してみた

Specsy Hub

Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。

タイトルとURLをコピーしました