2016-05-24 14 views
0

Elasticsearch 1.7.x(およびNEST 1.7.2)を使用しており、ここに記載されているルックアップによるフィルタリングを利用しようとしています:Terms Filter Lookup。 JSONを手作業で作成して、私が望む要求を行い、Senseを使って実行することができます。素晴らしい、素晴らしい機能を動作させる!しかし、NESTライブラリでは、このようなterms節を作成する方法はありません。たとえば、上記のリンクから、私は次のようなことができます:ElasticsearchとNEST:ルックアップを使用したフィルタリング

"terms" : { 
    "proteins" : { 
     "index" : "microarrays", 
     "type" : "experiment", 
     "id" : "experiment1234", 
     "path" : "upregulated_proteins" 
    }, 
    "_cache_key" : "experiment_1234" 
} 

NESTを使ってこのクエリを作成する方法はありますか?そうでない場合は、構築中のJSONをNESTクエリに挿入する方法はありますか?私はNEST 2.x +がこれをサポートしているかどうか分かりませんが、ES 2.xへのアップグレードは長期的な計画であり、ES 1.7ですでに利用可能な機能を活用したいと思います。

答えて

0

恐ろしいですが、私はすでにGreg MarzoukaのElasticから回答を受け取りました。彼は言う:

これは1.xのTermsLookup()またはTermsLookupFilterとしてマップされています。いくつかの例についてはunit testsをご覧ください。 2.xで

client.Search<Paper>(s => s 
    .Query(q => q 
     .Filtered(fq => qf 
     .Filter(f => f 
      .CacheKey("experiment_1234") 
      .TermsLookup(t => t 
       .Lookup<Protein>(p => p.UnregulatedProteins, "experiment1234", "microarrays", "experiment") 
      ) 
     ) 
    ) 
    )); 

それはもう少しESクエリDSLに揃えます。

+0

結果として、NESTライブラリの1.7バージョンには、必要に応じてキャッシュをクリアするのが難しいバグがあります。 NESTチームのリンクは、どのように回避できるかを説明しています。https://github.com/elastic/elasticsearch-net/issues/2229 –

関連する問題