当前位置: 首页 > 面试题库 >

在ElasticSearch中检索所有_id的有效方法

司马钱明
2023-03-14
问题内容

从ElasticSearch获取某个索引的所有_id的最快方法是什么?使用简单的查询是否可能?我的索引之一包含大约20,000个文档。


问题答案:

编辑:请也阅读@Aleck Landgraf的答案

您只想要elasticsearch-internal _id字段吗?还是id文档中的字段?

对于前者,请尝试

curl http://localhost:9200/index/type/_search?pretty=true -d '
{ 
    "query" : { 
        "match_all" : {} 
    },
    "stored_fields": []
}
'

Note 2017更新: 该帖子最初包含在内,"fields": []但此后名称已更改,并且stored_fields是新值。

结果将仅包含文档的“元数据”

{
  "took" : 7,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 4,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "index",
      "_type" : "type",
      "_id" : "36",
      "_score" : 1.0
    }, {
      "_index" : "index",
      "_type" : "type",
      "_id" : "38",
      "_score" : 1.0
    }, {
      "_index" : "index",
      "_type" : "type",
      "_id" : "39",
      "_score" : 1.0
    }, {
      "_index" : "index",
      "_type" : "type",
      "_id" : "34",
      "_score" : 1.0
    } ]
  }
}

对于后者,如果要包括文档中的字段,只需将其添加到fields数组中

curl http://localhost:9200/index/type/_search?pretty=true -d '
{ 
    "query" : { 
        "match_all" : {} 
    },
    "fields": ["document_field_to_be_returned"]
}
'


 类似资料:
  • 我目前在一个非常奇怪的猫鼬错误,我不知道是什么导致了这个问题。当我调用方法时,我得到一个有效的实例,只有字段未初始化。当我试图保存文档中的更改时,它会崩溃 我有一个简单的模式定义: 当我打电话给你 Mongoose返回文档,但只有未初始化。当我试图保存修改过的文档时,整个函数崩溃,而不是在此之前。我还将该文档记录到控制台,以验证是否缺少了“\u id”字段。 注意,是从另一个查询中提取的,是一个有

  • 问题内容: 我想从Elasticsearch集群中的完全匹配查询中获取所有结果。我不在乎结果是否是最新的,我不在乎订单,我只想稳定地浏览所有结果,然后从头开始。滚动和扫描最适合此操作,似乎不需要我拍摄快照就很受欢迎。我将要处理数以千万计的文档。 问题答案: 某种程度上与Elasticsearch查询重复,以返回所有记录。但是我们可以添加更多细节来解决开销问题。(即,“拍摄不需要的快照似乎有点受欢迎

  • 问题内容: 文件夹中的文档很少,我想检查该文件夹中的所有文档是否都已编制索引。为此,对于该文件夹中的每个文档名称,我想循环遍历ES中索引的文档并进行比较。所以我想检索所有文档。 有喜欢同一个问题的其他几个可能的重复[检索AElasticSearch)NEST查询所有记录,并在此处输入链接的描述,但他们没有帮助我的文档已经从那个时候改变了。(有什么关于扫描当前文档中) 我尝试使用。但是根据文档,将检

  • 问题内容: 我有一组层次结构的数据,我想从Firebase检索信息。以下是我的数据的外观: 但是,我的问题是这样的:在查看数据的结构时,当我想抓取或时,必须执行以下代码: 现在,这遍历了每个参加者的孩子,并逐个获取名称和对象ID。函数完成后,我将每个值存储到字典中。这样做后,该函数将被多次调用,并且可能会非常慢,尤其是在多次访问数据库或从数据库访问数据库时。有没有更有效的方法可以做到这一点?我试图

  • 当使用https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html描述的术语搜索时,我没有看到预期的结果 ElasticSearch版本为2.3.2:使用该版本创建数据: 此查询显示两条记录: 这个查询显示了一条记录,正如预期的那样: 但是使用不同的术语将不会产生记录: 不返回记录

  • 问题内容: 我的桌子上有很多记录(可能超过500 000或1 000 000)。我在此表中添加了一个新列,我需要使用该表中另一列的相应行值为该列中的每一行填充一个值。 我尝试使用单独的事务来选择每100条记录的下一个块并为其更新值,但是例如,要花费数小时来更新Oracle10中的所有记录。 在不使用某些方言特定功能的情况下,在SQL中执行此操作的最有效方法是什么,因此它可在任何地方(Oracle,