2016-12-13 7 views
0

私のページの特定の部分に特定の結果を表示したいとします。クエリに基づいて検索結果を弾性から分類する方法はありますか?グループ検索結果:elasticsearch

など。

1.

GET /my_index/_search 
{ 
"query": { 
    "bool": { 
     "must": [ 
      {"match": {"field1": "value1"}}, 
      {"match": {"field7": "value7"}} 
      ] 
     } 
    } 
} 

2.

GET /my_index/_search 
{ 
"query": { 
    "bool": { 
     "must": [ 
      {"match": {"field2": "value2"}} 
      ] 
     } 
    } 
} 

それは弾性とちょうどグループに結果をこれら2 1にコールを組み合わせることが可能ですか?

答えて

2

あなたはこれがNEST

var pool = new SingleNodeConnectionPool(new Uri($"http://localhost:9200")); 
var defaultIndex = "my_index"; 
var connectionSettings = new ConnectionSettings(pool) 
     .DefaultIndex(defaultIndex) 

var client = new ElasticClient(connectionSettings); 

var multiSearchResponse = client.MultiSearch(ms => ms 
    .Index(defaultIndex) 
    .Search<Document>("search1", s => s 
     .AllTypes() 
     .Query(q => q 
      .Match(m => m 
       .Field(f => f.Field1) 
       .Query("value1") 
      ) && q 
      .Match(m => m 
       .Field(f => f.Field7) 
       .Query("value7") 
      ) 
     ) 
    ) 
    .Search<Document>("search2", s => s 
     .AllTypes() 
     .Query(q => q 
      .Bool(b => b 
       .Must(mu => mu 
        .Match(m => m 
         .Field(f => f.Field2) 
         .Query("value2") 
        ) 
       ) 
      ) 
     ) 
    ) 
); 

// get the search responses for one of the searches by name 
var search1Responses = multiSearchResponse.GetResponse<Document>("search1"); 

にさらされている。これは、次の検索

POST http://localhost:9200/my_index/_msearch 
{"index":"my_index"} 
{"query":{"bool":{"must":[{"match":{"field1":{"query":"value1"}}},{"match":{"field7":{"query":"value7"}}}]}}} 
{"index":"my_index"} 
{"query":{"bool":{"must":[{"match":{"field2":{"query":"value2"}}}]}}} 
+0

を生成Multi Search API

と一つのリクエストで複数の検索を送信することができます私はちょうど 'MultiSearchAsync(IMultiSearchRequestを試してみましたリクエスト) 'と私の' GetResponse 'は結果を得ていないようです。 'var result = response.GetResponse (" search1 ")'は動作しますが、 'var result = response.GetResponse (" search1 ")'は動作しません。私が紛失している概念? –

+0

GetResponse ()に渡される 'T'ジェネリックパラメータ型は、ドキュメントを –

+0

にデシリアライズできる型でなければなりません。Tは' Index ' –