【问题标题】:Elasticsearch remove default fields from search's response bodyElasticsearch 从搜索的响应正文中删除默认字段
【发布时间】:2016-02-02 14:14:51
【问题描述】:

我正在执行一个返回 70k 文档的查询(我需要所有这些文档,并且我目前正在使用扫描和滚动)

发生的情况是响应非常大(2 MB,我们已经从 6 MB 减少了)。我们已经过滤了我们需要的字段,并且由于只从 API 调用查询,我们减少了属性的名称。

我可以看到数组“命中”中的每个文档都有以下我真的不需要它们的默认字段:

  • _index(我们只请求一个索引)
  • _type(我们只要求一种类型)
  • _id(我们已经在某个字段上有这个)
  • _score(我们不计分)

有没有办法删除它们,所以我可以有以下结构:

"hits" : [
{
    "_source": {
        ...
    }
},
{
    "_source": {
        ...
    }
}

]

感谢阅读! 我会感谢你的帮助!

【问题讨论】:

    标签: search elasticsearch compression


    【解决方案1】:

    是的,您可以使用response filteringfilter_path 参数,前提是您使用的是ES 1.6 或更高版本。

    curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source'
    

    你甚至可以指定你想要的字段

    curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source&_source=title,name'
    

    【讨论】:

    • 感谢您的快速回复!像魅力一样工作!
    • 是否可以使用 POST 正文请求过滤命中。** 字段?
    • @MikhailKholodkov 您绝对可以使用 POST 请求并在查询字符串中包含 filter_path
    • 谢谢,我明白了。我的问题是是否可以将 filter_path 逻辑放在正文中?为了保持 URI 中没有参数。
    • @MikhailKholodkov 不,这是不可能的。
    猜你喜欢
    • 2018-09-11
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2022-07-25
    相关资源
    最近更新 更多