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
命令而不进行查询(即,从源索引复制所有文档)并且它起作用了。预先感谢!
答案 0 :(得分:0)
我修复了它。问题是请求上的_type
字段;我要移动的文档没有类型_doc
。将该字段更改为适当的值可以解决此问题。