0

配列を含む多くのフィールドを持つ大きな JSON があります。「Middle1」、「Middle2」、「Middle3」などの多くのフィールドを含む「Top」フィールドがあるとします。これらの「中間」フィールドにはそれぞれ配列が含まれています。Middle1 内のみですべての要素を検索し、個々の要素を返す簡単な方法はありますか? 一致するクエリで "Middle1.description":"blahblahblah" を試すと、elasticsearch は Middle1 のすべてを返します。また、elasticsearch によるデフォルトのマッピングをネストされたものに変更しようとしましたが、次のように表示されます。

[object mapping [Middle1] can't be changed from non-nested to nested]

私はここで途方に暮れています。

また、ES がこれらすべての配列を検索し、一致する個々の要素を返すことができれば、それは素晴らしいことです。

4

2 に答える 2

2

下位互換性のある変更のみをマッピングに加えることができます。そのため、オブジェクトのタイプをネストされたものに変更しようとすると、そのエラーが返されます。実際にドキュメントのインデックスを作成する前に、ドキュメントのインデックスを再作成し、ネストされた型を事前に作成する必要があります。インデックスの作成中にcreate index apiを使用してマッピングを送信するか、後でput mapping apiを使用してマッピングを更新できます。

ネストされたドキュメントを使用しても、インデックスを作成したドキュメント全体が常に返されます。入れ子になった型が許すのは、異なる子を区別し、同じ子に属する適切な一致を返すことです。これは、1 対多のリレーションをマッピングし、子に対して同時に複数のクエリを作成する場合に便利です。詳細については、次の記事をご覧ください。

http://euphonious-intuition.com/2013/02/managing-relations-in-elasticsearch/ http://www.spacevatican.org/2012/6/3/fun-with-elasticsearch-s-children-and-ネストされたドキュメント/

記事で述べたように、親/子はネストされたドキュメントに代わるものであり、パフォーマンスは劣りますがより柔軟です。親と子は実際には独立しており、親にクエリを実行して子を取得するか、子にクエリを実行する親を取得できます。

親/子があなたの場合に役立つかどうかはわかりませんが、特に問題が一致する子を返すことだけである場合は.

于 2013-07-12T09:37:06.670 に答える