2015-05-14 57 views
2

我試圖使用NEST SearchRequest對象在我的ElasticSearch索引中查詢類型的動態列表。我如何在我的ElasticSearch查詢中看到NEST.SearchRequest.Type屬性的影響

public object Search(object runTimeData) 
{ 
    var request = new SearchRequest() 
    { 
     From = 0, 
     Size = 10 
    }; 

    request = SetRouting(request, runTimeData); 
    request = SetIndices(request, runTimeData); 
    request = SetTypes(request, runTimeData); 
    request = SetQuery(request, runTimeData); 
    ... 
    var results = _searchClient.Search<BaseOfAllTypes>(request); 
    return results; 
} 
... 
private SearchRequest SetTypes(SearchRequest request, object runTimeData) 
{ 
    request.Types = GetTypesForRuntime(runTimeData); 
} 

如果我打電話System.Text.Encoding.UTF8.GetString(_searchClient.Serializer.Serialize(request))通過我在哪裏我執行搜索行調試器,我看不出在JSON相關類型的東西:

{ 
    "from": 0, 
    "size": 10, 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "simple_query_string": { 
      "query": "my query data here", 
      "default_operator": "and" 
      } 
     } 
     ] 
    } 
    } 
} 

查詢結果回來就好像然而,類型正在被適當地過濾。直接通過elasticsearch-head運行生成的JSON會返回所有類型的結果,所以看起來好像我在請求的序列化中沒有看到我真正應該看到的內容。

回答

1

「類型」出現在HTTP請求標頭中。你看到的是HTTP請求體。要獲取請求標題,請使用

var requestHeader = results.ConnectionStatus.RequestUrl; 

您還將獲得羣集地址和索引名稱信息以及類型信息。

請注意,只有當Search()操作成功時,此項纔有效。否則results可能會是null,這個聲明將拋出一個NPE。

相關問題