2017-02-16 15 views
0

Я хотел бы сделать запрос на несколько типов с объектом SearchRequestnest elasticsearch: как настроить несколько типов в объекте SearchRequest?

Мой запрос будет выглядеть на код ниже:

var searchQuery = new BoolQuery 
{ 
     Should = shouldContainers, 
     Filter = filterContainers 
}; 

var searchRequest = new SearchRequest<dynamic>() 
{ 
    //Don't know how to target type 
    Type = EType.All, 
    //or 
    Type = typeof(obj1) && typeof(obj2) 
    Query = searchQuery, 
    Size = size 
    From = fromNumber, 
    MinScore = 1 
}; 

var response = await client.SearchAsync<dynamic>(searchRequest); 

Вы знаете, если это возможно, чтобы сделать что-то подобное и как это сделать?

ответ

1

Если вы не укажете индекс/тип в конечной точке, он будет искать весь кластер.

Update:

// 
    // Summary: 
    //  /_search 
    // 
    // Parameters: 
    // document: 
    //  describes an elasticsearch document of type T, allows implicit conversion from 
    //  numeric and string ids 
    public SearchRequest(); 

    // 
    // Summary: 
    //  /{index}/_search 
    // 
    // Parameters: 
    // index: 
    //  Optional, accepts null 
    public SearchRequest(Indices index); 

    // 
    // Summary: 
    //  /{index}/{type}/_search 
    // 
    // Parameters: 
    // index: 
    //  Optional, accepts null 
    // 
    // type: 
    //  Optional, accepts null 
    public SearchRequest(Indices index, Types type); 

    // The second one is what you are looking for, query on specific index regardless type, it does `POST /{index}/_search` 

    var searchRequest = new SearchRequest(myIndex){...} 
    var result = client.Search<dynamic>(searchRequest); 
+0

спасибо, но IP появляется, чтобы произвести запрос: POST:/индекс/объект/_search и он не дает мне результаты Нет –

+0

У меня есть 'уаг SearchRequest = новый SearchRequest() { ...} ' ' var result = client.Search (searchRequest); ' и я вижу фактический запрос' POST/_search', который запрашивает все указатели и все типы –

+0

да, если я пишу var searchRequest = new SearchRequest() insteade var searchRequest = new SearchRequest (), он запрашивает на всех t ypes !!! : D спасибо. Но, к сожалению, это также касается всех индексов (я не хочу этого) :(:( –