、以下の短い例で見ることができる方法:
{
"filtered": {
"query": {
// Your query goes here
}
},
"filter": {
"script": {
"script": "doc['field1'].value == doc['field2'].value == doc['field3'].value == doc['field4'].value"
}
}
}
}
私は唯一の2つのフィールドでこれを試してみたが、私はそれが動作するはずだと思いますそれ以上にも。
あなたは基本的に、これらのフィールドは、すべて等しくない文書を削除するには、フィルタを使用しています。うまくいけば、これは役に立ちます。
場合、あなたはdocumentBとドクメンタと一致し、それぞれの分野の5は別の問題であろうと同じかどうかを確認したいです。
この問題を解決するには、一度に1つのドキュメントを取得し、探しているフィールドにelasticsearchクエリフィルタリングを実行し、他のドキュメントが表示されるかどうかを確認するスクリプトを作成することをお勧めします。もしそうなら、それらを取り除き、プロセスを繰り返す。一致するものがない場合は、次の文書に移動します。チェックする文書がなくなると、完了です。 (完了した時点を追跡するためにドキュメントカウンターやドキュメント名のリストを保持したい場合があります)
これはおそらく、あなたが探していたきれいな弾性検索アプローチではないかもしれませんが、もっと良い方法があるかもしれません。あなたの問題を解決する1つの方法。
はこの欠点があるため、あなたがスクリプトをやっているということでしょう説明したようにバケット使用上の内側に完全なドキュメントを取得するには最初の例ではhere
を見ていると、CPU集約型であることがその可能性が高く、凝集をヒットあなたはこれを常に実行し続けたくないかもしれません。 –
ちょっとしたVishal、あなたの助けに感謝します。これは私が興味を持ったことに対処します。同じ文書内のフィールドに重複した値がないかチェックします。しかし、この場合、別のドキュメントの同じフィールドに重複した値がないかどうかを確認する必要があります。たとえば、Doc AにDoc Bと同じFirstName、LastName、Birthday、ZIP Codeがある場合は、重複します。 – SuperNES
私の答えを編集しました。うまくいけば助かります。 –