2016-04-20 7 views
-1

私はElasticsearchバージョン1.4.2から2.xに移行しています。弾性検索2.0の移行: "inFilter"相当

2.xに大きな変更があり、一部のAPIが削除されているため、現在のコードが壊れています。

バージョン2.xではinFilterのフィルタを検索しています。

Client client = CerridSearchClientFactory.getInstance().getClient(); 
     SearchRequestBuilder requestBuilder1 = client.prepareSearch(<index name>); 
       Double[] notNan = new Double[1]; 
       notNan[0] = Double.NaN; 
        FilterAggregationBuilder filter = AggregationBuilders.filter(<filter name>).filter(FilterBuilders.notFilter(FilterBuilders.inFilter(<field name> , notNan))); 
       filter = filter.subAggregation(AggregationBuilders.stats(<field name>) 
          .field(<field name>)); 
       SearchResponse sr = requestBuilder.addAggregation(filter).execute().actionGet(); 

私はそれをフィルターで統計集計を実行します。私は同じようなクエリではなく、フィルタ集約と合計、最小、最大の集約をやっている。

+0

あなたが持っている1.4のクエリの具体例を含めて、それを2.xに変換しようとしたものを含めると助けになります。多くのことが(または少なくとも)具体的に依存することになります。 – Jeroen

+0

私はフィルタ集約を実行しています。 FilterBuilders.notFilter(FilterBuilders.inFilter(、notNan))));私はいくつかの値を含めるか除外しようとしているところです。 –

+0

しかし、私は以前のコメントを繰り返すだけです。あなたのポストに具体的な例を追加すると、より良い結果が得られます。 – Jeroen

答えて

0

inFilterは、フィルタという用語の単なるエイリアスでした。

フィルタが削除されたので、terms queryを使用してください。