2014-03-19 47 views
1

有沒有什麼辦法可以隱藏ES作爲響應返回的一些常見字段?隱藏ES響應中的常見字段

例如,如果我得到如下回應:

{ 
    "took": 74, 
    "timed_out": false, 
    "_shards": { 
    "total": 15, 
    "successful": 15, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 24, 
    "max_score": 0.15932977, 
    "hits": [ 
     { 
     "_index": "prashant", 
     "_type": "session", 
     "_id": "LeIDrUNmSKGC5Sl9Y8O0Zw", 
     "_score": 0.15932977, 
     "fields": { 
      "Time": [ 
      "2014-01-08T15:01:26" 
      ] 
     } 
     }, 
     { 
     "_index": "prashant", 
     "_type": "session", 
     "_id": "dlpQGXk_TOyfNnUEG6skeQ", 
     "_score": 0.14296037, 
     "fields": { 
      "Time": [ 
      "2014-01-08T15:01:26" 
      ] 
     } 
     } 
    ] 
    } 
} 

現在我想的ES響應無了,TIMED_OUT,_shards,總的,成功的,失敗的價值,以及我不想_index,_type的名稱,因爲我正在對特定的索引和類型執行查詢。

那麼有沒有辦法以這種方式過濾ES響應?

回答

0

您可以通過在請求的搜索查詢部分指定要返回的字段來限制搜索響應。

"search_request": { 
    "fields": [ "title", "content" ], 
    "query": ... 
}, 

這是Elasticsearch的標準字段過濾器,它不是特定於羣集的。請記住,您必須包含稍後用於羣集的字段。查看插件的文檔(「更多關於字段映射」)。

+0

請問有什麼辦法來過濾像_index公共返回領域,_type如果我運行查詢,以特定的指數和類型是相同的所有記錄 – Prashant

1

使用「filter_path」查詢參數。在你的榜樣,只有包括所有結果的_source和_id字段(從而排除在響應中所有其他元數據)使用方法:

http://your-es-cluster?filter_path=hits.hits._source,hits.hits._id

它一直在REST API 1.6以來,我認爲。

要進一步過濾和限制_source中的字段,請使用正常的_source parameter filtering。例如:

http://your-es-cluster?filter_path=hits.hits._source,hits.hits._id&_source=Time