首页 文章

使用delete API不会在elasticsearch中删除索引

提问于
浏览
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日志:[tipindex]删除索引

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

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

这意味着索引被删除 .

但是,如果我重新启动elasticsearch,则会再次创建具有0个文档且没有映射的索引 .

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

现在我的问题是:

  • 为什么索引没有被删除?

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

  • 如何强制删除索引?

1 回答

  • 0

    这可能是由于蒙戈河 .

    为什么索引不会被删除?

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

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

    我认为Mongo river store在 _river/tipindex index中是最后一个获取点 . 当你已经在河里奔跑时,它还会留下一些东西 . 您可以检查此索引中剩余的所有文档:

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

    如果您需要重新启动河流,最好的选择是让我像以前一样移除并重建河流 .

    HTH

相关问题