当前位置: 首页 > 知识库问答 >
问题:

筛选出元数据字段,只返回elasticsearch中的源字段

周阳成
2023-03-14

有没有办法告诉elasticsearch不返回任何元数据?目前,我可以选择哪些字段我想返回在源代码中。但我只想要源码中的字段。我宁愿不返回元数据,因为我不需要它,并节省一些不必要的解析和传输等。

我找到了弹性搜索--如何只返回数据,而不返回元信息?旧的问题,有人评论说当时不可能做到这一点。想知道这个功能是已经添加了还是仍然缺少?

共有1个答案

黄无尘
2023-03-14

response_filtering

所有REST API都接受一个filter_path参数,该参数可用于减少ElasticSearch返回的响应。此参数采用逗号分隔的过滤器列表,用点表示法表示:

curl -XGET 'localhost:9200/_search?pretty&filter_path=took,hits.hits._id,hits.hits._score'
{
  "took" : 3,
  "hits" : {
    "hits" : [
      {
        "_id" : "3640",
        "_score" : 1.0
      },
      {
        "_id" : "3642",
        "_score" : 1.0
      }
    ]
  }
}

在python中

def get_all( connection, index_name, type_name ):

    query = {
        "match_all":{}
    }

    result = connection.search( index_name, type_name,
             {"query": query},
             filter_path= ["took", "hits.hits._id", "hits.hits.score"])

    return result

如果要筛选_source字段,应该考虑将现有的_source参数(有关更多细节,请参见Get API)与filter_path参数结合起来,如下所示:

curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source&_source=title'
{
  "hits" : {
    "hits" : [ {
      "_source":{"title":"Book #2"}
    }, {
      "_source":{"title":"Book #1"}
    }, {
      "_source":{"title":"Book #3"}
    } ]
  }
}
 类似资料:
  • 我的文档具有如下所示的嵌套字段: 嵌套字段的映射如下所示: 在切换到ElasticSearch2之前,我使用aggs查询了没有结果的文档。以下是查询的聚合部分: 现在我切换到了ElasticSerach2,它只计算所有文档。我已经尝试了不同的方法,比如计算所有文档和计算结果,这样我就可以减去结果,但是 总是0 如何正确筛选/计算嵌套字段?

  • 问题内容: 如何在结果中返回特定字段的标记 例如,一个GET请求 退货 我想在结果中包含“ _source.message”字段的标记 问题答案: 使用以下script_fields脚本还有另一种方法: 重要的是要注意,尽管此脚本返回已被索引的实际术语,但它也会缓存所有字段值,并且在大索引上会占用大量内存。因此,在较大的索引上,使用以下MVEL脚本从存储的字段或源中检索字段值并快速重新解析它们可能

  • 我正在使用ElasticSearch 7.3来查询一些文档, 我想在查询响应中只返回每个文档的特定字段, 我发现可以使用来实现这一点, 我可以从Kibana使用这个查询来实现这一点- 返回给我正确的数据- 但我无法使用ElasticSearch的节点客户端实现同样的功能- 有人能帮我找到正确的方法来实现我的用例吗? 引用- https://www.elastic.co/guide/en/elast

  • 问题内容: 我们要求我们仅返回搜索结果中的源字段,而不包含任何元数据。通过搜索,我发现使用Elasticsearch无法做到这一点,但是我确实找到了在该线程中使用插件的参考: 被链接的插件是这个: https://github.com/imotov/elasticsearch-just- source/blob/master/src/main/java/org/elasticsearch/exam

  • 我们要求只返回搜索结果中的源字段,而不返回任何元数据。通过搜索,我发现这在elasticsearch中是不可能的,但我确实在这个线程中找到了一个可能使用插件的引用: 筛选出元数据字段,只返回elasticsearch中的源字段 链接的插件是这样的: 我还在学习elasticsearch,但是有人能解释一下我将如何在我们的elasticsearch配置中实现和部署这个插件吗? 谢谢,吉姆

  • 问题内容: 为什么在能够过滤查询时无法看到_timestamp字段? 以下查询返回正确的文档,但不会返回时间戳本身。如何返回时间戳? 映射为: 样本输出: 问题答案: 启用时间戳字段后,默认情况下会对其进行索引但不存储。因此,尽管您可以通过时间戳字段进行搜索和过滤,但是您无法轻松地通过记录来检索它。为了能够检索时间戳字段,您需要使用以下映射重新创建索引: 这样,您将能够检索到时间戳记以来的毫秒数。