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では単語とみなす。そしてその単語は検索された時に備えて、単語と検索対象(ドキュメント)を保存される。