UnavailableShardsException

时间:2013-06-28 10:35:51

标签: mysql elasticsearch elasticsearch-jdbc-river

我想使用elasticsearch& amp;索引和搜索mysql数据库。我按照本教程

https://github.com/jprante/elasticsearch-river-jdbc/wiki/Quickstart

首先我下载了​​elasticsearch并在其插件文件夹中安装了river-jdbc。然后在ES_HOME / plugins / river-jdbc /中添加了mysql-jdbc然后启动了elasticsearch并启动了另一个终端窗口,并使用此curl命令创建了一个名为my_jdbc_river的新JDBC河

curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
    "type" : "jdbc",
    "jdbc" : {
        "driver" : "com.mysql.jdbc.Driver",
        "url" : "jdbc:mysql://localhost:3306/bablool",
        "user" : "root",
        "password" : "babloo",
        "sql" : "select * from details"
    },
    "index" : {
        "index" : "jdbc",
        "type" : "jdbc"
    }
}'

我收到以下错误: -

然后当我运行此命令时:curl -XGET 'localhost:9200/jdbc/jdbc/_search?pretty&q=*'

我收到了以下错误:

"error": "IndexMissingException[[jdbc] missing]", "status" : 404

当我在浏览器中提出这个时:

http://localhost:9201/_search?q=*

我是这样的:

{
  "took": 51,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 1.0,
    "hits": [
      {
        "_index": "_river",
        "_type": "my_jdbc_river",
        "_id": "_meta",
        "_score": 1.0,
        "_source": {
          "type": "jdbc",
          "jdbc": {
            "driver": "com.mysql.jdbc.Driver",
            "url": "jdbc:mysql://localhost:3306/bablool",
            "user": "root",
            "password": "babloo",
            "sql": "select * from details"
          },
          "index": {
            "index": "jdbc",
            "type": "jdbc"
          }
        }
      }
    ]
  }
}

mysql dB索引了吗?我怎样才能在我的Db中搜索?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,这就是我设法解决问题的方法:

首先,我通过http://localhost:9200/_cat/indices?v

检查了所有索引

删除健康状况为red的所有指数(只有一个健康状况为红色的索引_river)

这是您在索引curl -XDELETE 'localhost:9200/_river/'

中删除的方式

重做您提到的https://github.com/jprante/elasticsearch-river-jdbc/wiki/Quickstart

链接中的第7步

希望它能解决你的问题:)祝你好运!!