第2回目の Elasticsearch 入門は「データスキーマ設計のいろは」です。 設計と言うほどでもないのですが、例えば RDB で検索にフォーカスした設計や、他の検索エンジンも経験していると、これまでの制限や習慣で Elasticsearch の特徴を生かせない設計をしてしまう事があるので、このテーマにしてみました。 それではインデックスするためのデータ構造を Elasticsearch でどのように設計するのか解説したいと思います。 設計フローまで変えてしまう画期的なドキュメント指向型検索エンジン Elastic 社のホームページを見てみると Elasticsearch の特徴の1つとして「Document-Oriented」と言う記載があります。直訳すると「ドキュメント指向」です。 簡単に説明すると 現実世界の複雑なデータをJSONドキュメントにしてインデックスするだけで、デフォル
(募集はダミーデータです) (参考: ドキュメント登録の流れについては Elasticsearch 入門 を参照すると良いです。) Analyzer 上記のデータを実際に入れる前に、index の作成と analyzer の設定をします。 以下のコマンドを実行することで analyzer の設定ができます。 下記で説明して行きます。 curl -XPUT 'http://localhost:9200/wantedly-demo' -d \ '{ "settings": { "analysis": { "filter": { "pos_filter": { "type": "kuromoji_part_of_speech", "stoptags": [ "助詞-格助詞-一般", "助詞-終助詞" ] }, "greek_lowercase_filter": { "type": "lowerc
Elasticsearchには、辞書形式のデータの配列(複数のプロパティを持つオブジェクトの配列)をインデックスする際に、Nested と言うフィールドタイプが用意されています。 インデックスする際にJSONデータの内容は同じでもNested型でマッピング定義されているのか?単にオブジェクトの配列としてマッピング定義されているのかで、検索やソートなどで動作が異なるので注意が必要です。と言うか検索要件によって使い分ける必要が有ります。 デフォルトのダイナミックテンプレートでは、単純にオブジェクトの配列としてマッピング定義されます。 Array Objects最初に、通常のオブジェクトの配列についての説明です。 BtoB向けのECサイトを例に、商品は顧客ごとに販売価格が異なる仕様だとします。 { "product_id": "A000001", "prices": [ { "customer_
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く