elasticsearchで検索される英単語と検索されない英単語について
以下ではどのようにデータが格納され、どんなキーワードなら検索できるかを焦点に見る。
例:英文を格納する
エラスティックサーチにおいて英文を格納するケースでは、英文は文章中のスペース(white space)に基づいて単語に分割するとある。
したがってスペースで区切られた単語は検索できる様になるが、スペースがないものに関しては検索できないと結論付けられる。
これを確かめる。
// 格納するインデックスを作成する // インデックス作成と同時に明示的にMappingを作成 PUT sample { "mappings":{ "properties": { "content":{ "type":"text" } } } }
// データ(ドキュメント)を格納する // 以下の場合、単語として"I", "have", "two", "dogs", "you", "threecats"がスペースに基づき単語とみなされる。 PUT sample/_doc/1 { "content": "I have two dogs. you have threecats." }
// 検索は以下のように行う // contentの値に探したいキーワード(単語)を書く GET sample/_search { "query":{ "match":{ "content":"dogs" } } } // 結果はI, have, two, dogs, you, threecatsでは検索したら検索結果がありとなる。 // 一方で"dog", "cats","three"では検索結果は無しとなる。
スペースで区切られた単語は検索できるが、スペースがないものに関しては検索できないと結論付けられる。 スペースで区切られた文字列をelasticsearchでは単語とみなす。そしてその単語は検索された時に備えて、単語と検索対象(ドキュメント)を保存される。