3

あいまいなタイトルで申し訳ありませんが、より適切なものはありませんでした。

私は Elastic Search を調べていて、とてもクールに見えます。私はSQLに慣れているので、私の質問は概念的なものです。

SQL では、さまざまなデータベースがあり、そこに各アプリケーションのデータを保存します。同じ概念が ES に存在しますか? それとも、すべてのアプリケーションのすべてのデータが同じ場所に保存されるのでしょうか? その場合、不適切なデータによる望ましくない結果を回避するためのベスト プラクティスは何ですか?

4

2 に答える 2

4

スキーマレスは構造のないという意味ではありません。

  • エラスティック検索では、データをドキュメント コレクションに整理できます
  • トップレベルのドキュメント コレクションは、データベースとほぼ同等です
  • また、最上位のコレクション内に新しいドキュメント コレクションを階層的に作成することもできます。これは、データベース テーブルに非常に大まかに相当します。
  • ドキュメントを検索するときは、特定のドキュメント コレクション内のドキュメントを検索します (blog1 内のすべての投稿を検索するなど)。
  • 個々のドキュメントは、データベース テーブルの行と同等に表示できます
  • また、おおむね同等であると言うことにも注意してください。SQL のデータはリレーションによってテーブルに正規化されることが多く、(ES の) ドキュメントは大量のデータ エンティティを保持することがよくあります。たとえば、通常、すべてのコメントをブログ投稿ドキュメント内に埋め込むことは理にかなっていますが、SQL では、コメントとブログ投稿を個々のテーブルに正規化します。

優れたチュートリアルについては、 「ElasticSearch in 5 minutes」チュートリアルを参照することをお勧めします。

于 2012-10-16T13:47:48.647 に答える
3

SQL から検索エンジンへの切り替えは、困難な場合があります。Elasticsearch には、大まかにデータベースにマッピングできるインデックスの概念と、非常に大まかにテーブルにマッピングできる型があります。Elasticsearch には、単一タイプのレコード (行) を選択し、異なるタイプとインデックス (ユニオン) からの結果を結合する非常に強力なメカニズムがあります。ただし、現時点では結合はサポートされていません。Elasticsearch がサポートする唯一の関係は has_child ですが、多対多の関係のモデル化には適していません。そのため、ほとんどの場合、データを 1 つのテーブルに格納できるように、データを非正規化する準備をする必要があります。

于 2012-10-16T13:52:15.823 に答える