その7(Analyzerについて)ある程度のデータセットを試して見たいんで既存でテータ提供しているものを利用させていただきます。そこで実施してみようと思ったところで以下のサイト。グルメの研究用データセット」を使ったデータの検証が行われています。同じようなことやってもと思いつつも、こちら「2014-01-21」の記事であります。バージョンアップの早いソフトウェアであるElasticsearchですのでどのぐらい違いがあるのか試してみました。こちらの記事との大きな違いとして以下の3点があります。Analyzerでkuromojiを利用elasticsearch6ではインデックス内に複数のTypeを設定できないのでインデックスを2つに分けてみる。elasticsearch6ではデータ型で「string」は利用できないので変更。Table」というのを見かけましたが、正直あまり正しくなく、寧ろ理解の妨げになってしまうのかなと感じました。データ型についてElasticsearch6では「String」のデータ型は廃止になっています。Elasticsearch5から「String」は非推奨となりましたが6系ではエラーとなります。かわりに「text型」、「keyword型」を利用します。主なデータ型は以下です。text型text型は、文字列からなる文章を格納するデータ型です。text型のフィールドは、格納時にアナライザ(Analyzer)によって文章を構成する各単語に分割され、分割された単語ごとに転置インデックスが構成されるという特徴があります。keyword型keyword型は、text同様に文字列を格納できます。text型との大きな違いとして、keyword型は格納した文字列を[完全一致]で検索する用途で使います。keywordに格納したデータはアナライザによる単語分割処理が行われません。「メールアドレス」や「WebサイトのURL」、「タグ分類を行う際のタグ名」といったデータは、分割せずに格納・検索したいケースが多いはずです。数値データの型long、short、integer、float日付データの型dateboolean型trueまたはfalseのみを指定できます。指定のみとなりました。“true”/”false”(文字化)でも利用できます。マッピングを行うElasticsearchでドキュメント内のデータ構造やデータ型を定義したもものをマッピングと呼びます。マッピングはリクエストボディに「mappings」句を書いて定義することができます。「mappings」句の中ではドキュメントタイプの名前、及び、そこに含まれる各データ型定義(フィールド名及びデータ型」を「properties」句の中に定義します。マッピングの定義ですが、一度定義したマッピングは変更することができないので注意が必要です。変更する場合はインデックス毎削除して再作成の必要があります。(もちろんデータの移行も)そのためマッピングの作成はある程度の注意が必要です。フィールドの追加はできます。今回マッピングの作成はファイルから実施してみます。以下のファイルを作成します。"kuromoji_tokenizer"}}}}}今回、日本語を使うということで上記のファイルを使ってインデックスの作成を行います。restaurantからインデックスを作成します。"restaurant"}続いてratingもインデックスを作成します。"rating"}さて、マッピング作成用に以下の2つのファイルを準備しました。こちらでマッピングの作成を行います。"date"}}}さて、こちらのマッピングを登録したいと思います。「restaurant」から。true}インデックス名が「restaurant」でタイプ名が「type」で登録されました。書いていますが、Elasticsearch6では「Content-Type」の設定が必要なのでそちらをリクエストに追加しています。こちらのインデックスの状況を確認してみます。"6030299"}}}}}無事登録されているようですね。同じように「rating」のマッピングを行います。true}インデックス名が「rating」でタイプ名が「type」で登録されています。同じようにインデックスの状況を確認してみます。"6030299"}}}}}こちらで無事、マッピングと確認が実施できました。全体的なインデックスの状態は以下になります。1.2kbそしてそれぞれのステータスは以下になります。0}}}}}長くなったので次回にデータの登録を行なってみます。その7(Analyzerについて)このブログは株式会社CoLabMixによる技術ブログです。GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。