2016-09-02 4 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; } 
} 

것이다 당신의 컬 요청으로 둥지에서 동일한 쿼리를 수행하려면 q 쿼리 문자열 매개 변수는 쿼리를 지정합니다.

+0

감사! 차이가 있다는 것을 깨달으십시오. – dausdashsan

관련 문제