隐藏ES响应中的常见字段

时间:2014-03-19 08:45:00

标签: elasticsearch carrot2

有什么方法可以隐藏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在没有 take,timed_out,_shards,total,success,failed 值的情况下做出回应,我也不想要 _index,_type <的名称/ strong>因为我正在执行特定索引和类型的查询。

那么有没有办法以这种方式过滤ES响应?

2 个答案:

答案 0 :(得分:1)

使用&#34; filter_path&#34;查询参数。在您的示例中,要仅为所有结果包含_source和_id字段(从而排除响应中的所有其他元数据),请使用:

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

自从1.6以来,它一直在其余的api中。

要进一步过滤和限制_source中的字段,请使用普通_source parameter filtering。例如:

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

答案 1 :(得分:0)

您可以通过在请求的搜索查询部分中指定要返回的字段来限制搜索响应。

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

这是Elasticsearch的标准字段过滤器,它不是特定于群集的。请记住,您必须包含稍后将用于群集的字段。请参阅插件的文档(“有关字段映射的更多信息”)。