【问题标题】:Elasticsearch - Reindex Picks Up No DocumentsElasticsearch - 重新索引不拾取任何文档
【发布时间】:2019-01-23 18:34:33
【问题描述】:

这里是ES新手。我想根据标准将文档从一个索引移动到另一个索引。我一直在使用 Reindex API,特别是需要查询的版本 - 此处的文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html

我一直在向<root_es_uri>/_reindex 发布以下查询。

{
  "source": {
    "index": <EXISTING_SOURCE_INDEX>,
    "type": "_doc",
    "query": {
      "term": {
        "domain": <A SPECIFIC DOMAIN>
      }
    }
  },
  "dest": {
    "index": <AN EXISTING EMPTY INDEX>
  }
}

运行它会产生以下结果:

{
    "took": 37,
    "timed_out": false,
    "total": 0,
    "updated": 0,
    "created": 0,
    "deleted": 0,
    "batches": 0,
    "version_conflicts": 0,
    "noops": 0,
    "retries": {
        "bulk": 0,
        "search": 0
    },
    "throttled_millis": 0,
    "requests_per_second": -1,
    "throttled_until_millis": 0,
    "failures": []
}

所以它“成功”了,但没有找到要移动的文档。当我从_reindex 调用对源索引的_search 端点运行查询时,它返回我想要移动的所有文档,所以我知道我的查询是合法的。起初我以为源索引可能配置为不允许像这样重新索引,但我在没有查询的情况下运行了_reindex 命令(即,从源索引复制所有文档)并且它起作用了。提前致谢!

【问题讨论】:

  • 您是如何针对_search 端点运行查询的?
  • 我使用 { "query": { "term": { "domain": &lt;A SPECIFIC DOMAIN&gt; } } } 的 JSON 正文向 &lt;root_es_uri&gt;/&lt;source_index&gt;/_search 发送了一个 POST。使用 POST 而不是 GET 的原因是我使用的是 Postman,它不允许在 GET 的正文中传递 JSON。但是,ES 对 _search 端点的 POST 响应相同。

标签: elasticsearch


【解决方案1】:

我修好了。问题是请求中的_type 字段;我有兴趣移动的文档没有_doc 类型。将此字段更改为适当的值即可解决此问题。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    相关资源
    最近更新 更多