2017-01-22 5 views
0

キーワード配列フィールド(たとえばf)があり、正確な配列のドキュメントをフィルタリングする必要があります(例:f = [1,3,6]のフィルタドキュメント)。条項)。ElasticSearch 5.1配列を比較したフィルタリング

これを行う最善の方法は何ですか?これを達成するための

よろしく

+0

正確に同じ注文をしたいのはなぜですか? –

+0

指向性非循環グラフ(DAG)構造のノードは、すべてが同じ親(すなわちグラフ文書)を有するelasticsearchの文書として表されるが、各ノードは親の順序付けられたIDの配列であるparentNodeIdsと呼ばれるフィールドを有する。ここで、ユーザは、ルート親ノードIDからリーフノードIDまで順序付けられた特定のパス(すなわち、ノードIDの配列)を有するリーフノードの存在を検索するという要件が存在する。私はparentNodeIdsが指定されたパス配列と正確に一致するノードをフィルタリングすることによって、この要件を満たしたいと思います。より良いアプローチは? – geeko

答えて

1

一つの方法はまた、配列の要素数をチェックするクエリにスクリプトを追加することです。

そのスクリプトが

 "filters": [ 
     { 
     "script": { 
      "script": "doc['f'].values.length == 3" 
     } 
     }, 
     { 
     "terms": { 
      "f": [ 
      1, 
      3, 
      6 
      ], 
      "execution": "and" 
     } 
     } 
    ] 

ようなものになるだろうあなたがアイデアを得る願っています。

さらに良い考えは、配列を文字列として保存し(グラフの構造に多くの変更がない場合)、文字列を直接一致させることです。これはずっと速いでしょう。