2016-09-02 14 views
0

巣について調べるだけです。私はすでにElastic Searchにいくつかの文書を挿入しています。今、自分のタイプ、subcriberIdに基づいてデータを検索したいと思います。私はカールして実行し、それはうまく動作します。しかし、巣を使ってみると、結果は見つかりませんでした。NEST検索が見つかりませんでした。

マイカール作品:

http://localhost:9200/20160902/_search?q=subscribeId:aca0ca1a-c96a-4534-ab0e-f844b81499b7

マイNESTコード:

 var local = new Uri("http://localhost:9200"); 
     var settings = new ConnectionSettings(local); 
     var elastic = new ElasticClient(settings); 

     var response = elastic.Search<IntegrationLog>(s => s 
          .Index(DateTime.Now.ToString("yyyyMMdd")) 
          .Type("integrationlog") 
          .Query(q => q 
           .Term(p => p.SubscribeId, new Guid("aca0ca1a-c96a-4534-ab0e-f844b81499b7")) 
          ) 
         ); 

誰かが私が間違って何をしたかを指すことができますか?

答えて

2

カール要求とNESTクエリの主な違いは、前者がquery_stringクエリ、後者がtermクエリを使用している点です。 A query_stringクエリ入力はクエリ時に解析されますが、termクエリ入力はどのように解析されるかによって異なります(subscribeId)。異なる結果が表示されることがあります。さらに、カール要求は、インデックス20160902内のすべてのドキュメントタイプを検索しています。

これは、これは使用に類似しているリクエストのボディに query_stringクエリを指定

POST http://localhost:9200/20160902/_search 
{ 
    "query": { 
    "query_string": { 
     "query": "aca0ca1a-c96a-4534-ab0e-f844b81499b7", 
     "fields": [ 
     "subscribeId" 
     ] 
    } 
    } 
} 

void Main() 
{ 
    var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); 
    var connectionSettings = new ConnectionSettings(pool) 
     // set up NEST with the convention to use the type name 
     // "integrationlog" for the IntegrationLog 
     // POCO type 
     .InferMappingFor<IntegrationLog>(m => m 
      .TypeName("integrationlog") 
     ); 

    var client = new ElasticClient(connectionSettings); 

    var searchResponse = client.Search<IntegrationLog>(s => s 
     .Index("20160902") 
     // search across all types. Note that documents found 
     // will be deserialized into instances of the 
     // IntegrationLog type 
     .AllTypes() 
     .Query(q => q 
      // use query_string query 
      .QueryString(qs => qs 
       .Fields(f => f 
        .Field(ff => ff.SubscribeId) 
       ) 
       .Query("aca0ca1a-c96a-4534-ab0e-f844b81499b7") 
      ) 
     ) 
    ); 
} 

public class IntegrationLog 
{ 
    public Guid SubscribeId { get; set; } 
} 

だろうあなたのカールの要求としてNESTでまったく同じクエリを実行するにはqクエリ文字列パラメータを使用してクエリを指定します。

+0

ありがとうございます!違いがあることだけを認識してください。 – dausdashsan

関連する問題