あなたは、elasticsearchがその上に構築されているライブラリであるluceneのインデックス付きフィールドと保存されたフィールドの概念を混同しています。
フィールドが逆索引内にある場合、フィールドは索引付けされます。これは、lucene が優れた高速の全文検索機能を提供するために使用するデータ構造です。フィールドを検索する場合は、インデックスを作成する必要があります。フィールドに索引を付ける場合、そのまま索引付けするか、分析するかを決定できます。これは、トークン (単語) のリストとトークンのリストを生成する、それに適用するトークナイザーを決定することを意味します。生成されたトークンを変更できるフィルター (一部を追加または削除することもできます)。フィールドにインデックスを付ける方法は、フィールドの検索方法に影響します。フィールドにインデックスを付けても分析しない場合、そのテキストが複数の単語で構成されている場合、空白を含む正確な特定のテキストを検索するだけで、そのドキュメントを見つけることができます。
フィールドを取得できるようにする場合は、フィールドを格納します。Lucene がある種のストレージも提供しているとしましょう。これは転置インデックス自体とは何の関係もありません。lucene を使用して検索すると、一致するドキュメント ID のリストが返されます。次に、保存されたフィールドからテキストを取得できます。これは文字通り検索結果として表示されます。フィールドを保存しないと、lucene からフィールドを取得することはできません (ただし、以下で説明するように、elasticsearch には当てはまりません)。
検索するだけで表示しないフィールドを持つことができます: インデックス化され、保存されません (lucene のデフォルト)。
検索および取得したいフィールドを持つことができます: 索引付けされ、保存されます。
検索したくないが、表示するために取得したいフィールドを持つことができます。
したがって、2 つのデータ構造は互いに関連していません。フィールドのインデックス作成と lucene への保存の両方を行った場合、その内容が同じ形式で 2 回表示されることはありません。保存されたフィールドは、lucene に送信するとそのまま保存されますが、インデックス付きフィールドは分析される可能性があり、逆インデックスの一部になりますが、これは別のことです。格納されたフィールドは特定のドキュメント (lucene ドキュメント ID によって) を取得するように作成され、インデックス付きフィールドは検索するように作成され、結果として各用語をキーとして持つテキストを文字どおり反転させ、ドキュメントのリストと共に検索するように作成されます。それを含むID(投稿リスト)。
ただし、elasticsearch に関しては、状況が少し変わります。フィールドをマッピングに保存するように構成しない場合 (デフォルトはstore:no
)、デフォルトで取得できます。これは、elasticsearch が送信したソース ドキュメント全体を (この機能を無効にしない限り) _sourceと呼ばれる特別な lucene フィールド内に常に lucene に格納するために発生します。
elasticsearch を使用して検索すると、デフォルトでソース フィールド全体が返されますが、特定のフィールドを要求することもできます。その場合、elasticsearch は、それらの特定のフィールドが lucene に格納されているかどうかをチェックします。そうでない場合は、_source
保存されたフィールドが lucene から取得され、json として解析され (プル解析)、それらの特定のフィールドが抽出されます。最初のケースでは少し速くなるかもしれませんが、必ずしもそうとは限りません。ソースが非常に大きく、いくつかのフィールドのみをロードしたい場合は、それらを lucene に保存するように構成すると、おそらくロード プロセスが速くなります。一方、_source
それほど大きくなく、多くのフィールドをロードしたい場合は、格納されたフィールドを 1 つだけロードする方がよいでしょう (_source
)、これは単一のディスクシーク、解析などにつながります。ほとんどの場合、_source
フィールドを使用すると問題なく機能します。
あなたの質問に答えるには: 逆インデックスと lucene ストレージは 2 つの完全に異なるものです。store:yes
Elasticsearchは同じコンテンツを json 内に保持するため、フィールドを (マッピングに)格納することにした場合にのみ、lucene に同じデータの 2 つのコピーを持つことになります_source
が、これは、あなたがフィールドの索引付けまたは分析を行っています。