【发布时间】: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": <A SPECIFIC DOMAIN> } } }的 JSON 正文向<root_es_uri>/<source_index>/_search发送了一个 POST。使用 POST 而不是 GET 的原因是我使用的是 Postman,它不允许在 GET 的正文中传递 JSON。但是,ES 对_search端点的 POST 响应相同。
标签: elasticsearch