0

我创建了一个索引

curl -XPUT 'http://localhost:9200/tipindex/' -d '{
     "settings" : {
        "index" : {
            "number_of_shards" : 1,
            "number_of_replicas" : 1,
          }
     }
  }
}'

然后我使用以下命令将河流与索引相关联:

curl -XPUT "localhost:9200/_river/tipindex/_meta" -d '
{
"type": "mongodb",
"mongodb": {
    "host": "<machine-name>",
    "port": "27017",
    "db": "mydb",
    "collection": "tips"
},
"index": {
    "name": "tipindex",
    "type": "tips"
 }
}'

索引已正确创建,所有文档都已编入索引。但是,如果我使用以下方法删除索引:

curl -XDELETE '<machine-name>:9200/tipindex/'

它完成了{"ok":true,"acknowledged":true}

ES log : [tipindex] 删除索引

现在如果我执行 curl -XDELETE 'localhost:9200/tipindex/'

{"error":"IndexMissingException[[tipindex] missing]","status":404}

这意味着该索引被删除。

但是,如果我重新启动 elasticsearch,则会再次创建索引,其中包含 0 个文档且没有映射。

如果我重新创建索引并关联一条河流,则不会索引任何文档。ES 日志也不显示任何错误。

现在我的问题是:

  • 为什么索引没有被删除?
  • 当我重新创建索引时,为什么文档没有再次被索引?
  • 如何强制删除索引?
4

1 回答 1

0

这可能是由于mongo河。

为什么索引没有被删除?

如果索引不存在,它会在您每次重新启动河流时重新创建索引。

当我重新创建索引时,为什么文档没有再次被索引?

我认为 Mongo 河存储在_river/tipindex索引中的最后一个提取点。当你已经跑过这条河时,里面还有一些东西。您可以检查此索引中剩余的所有文档:

curl localhost:9200/_river/tipindex/_search?q=*

如果您需要重新启动河流,对我来说最好的选择是像以前一样删除并重新创建河流。

高温高压

于 2013-04-03T08:46:40.763 回答