【问题标题】:Index not getting deleted in elasticsearch using delete API使用删除 API 在弹性搜索中未删除索引
【发布时间】:2013-04-03 16:46:40
【问题描述】:

我创建了一个索引

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 日志也不显示任何错误。

现在我的问题是:

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

【问题讨论】:

    标签: mongodb elasticsearch


    【解决方案1】:

    这可能是由于mongo河。

    为什么索引没有被删除?

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

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

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

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

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

    HTH

    【讨论】:

    • 如果我删除了索引,它怎么会重新创建?有什么方法可以阻止河流创建此索引。我已经提到,在重新启动时河流自动创建索引后,文档总数为零。如何删除并重新创建河流。 AFAIK,我刚刚删除了索引,它应该会自动删除附加的河流。
    • 没有。删除索引不会删除河流。
    • 要回复how come it is getting re-created?,请参阅github.com/richardwilly98/elasticsearch-river-mongodb/blob/…
    • 不知道这是否有帮助,我就把它留在这里。我对jdbc河有类似的问题,我删除了河然后索引,ES不断重建索引和河,我修改了elasticsearch.yml配置文件,我将工作目录设置为/usr/local/elasticsearch -0.90.0/work (但该目录不存在,并且 ES 在没有创建它的情况下工作 - 它根本没有使用它)。然后我尝试评论该设置(使用默认设置)并且删除工作正常。
    猜你喜欢
    • 2015-05-23
    • 2016-01-30
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2014-04-16
    • 1970-01-01
    相关资源
    最近更新 更多