elasticsearch - 将Elasticsearch jriver jdbc插件与索引设置一起使用时发生错误

标签 elasticsearch elasticsearch-jdbc-river

我正在尝试将elasticsearch jdbc jriver插件与自定义index_settings一起使用,但似乎无法创建索引。这是我的字符串:

    # search channels
PUT /_river/tetours/_meta
{
   "type": "jdbc",
   "jdbc": {
      "driver": "com.mysql.jdbc.Driver",
      "url": "jdbc:mysql://localhost:3306/test",
      "user": "blah",
      "password": "******",
      "sql": "SELECT id AS _id,title,city FROM channel where active=1",
      "strategy": "simple",
      "autocommit": true,
      "index": "teindex",
      "type": "tours",
      "index_settings" : "{ \"analysis\" : { \"analyzer\": { \"tindex_analyzer\": { \"tokenizer\": \"standard\", \"filter\": [\"standard\",\"lowercase\"]},\"tsearch_analyzer\": {\"tokenizer\": \"standard\",\"filter\": [\"standard\",\"synonym\",\"lowercase\"]}}, \"filter\" : { \"synonym\" : { \"type\" : \"synonym\", \"synonyms_path\" : \"analysis/synonym.txt\" }}}}",
      "type_mapping": "{ \"tours\": {\"properties\": {\"title\": {  \"type\": \"string\",\"index\": \"analyzed\", \"index_analyzer\": \"tindex_analyzer\", \"search_analyzer\": \"tsearch_analyzer\", \"store\": \"yes\"}}}}",     
      "poll": "15m"
   }
}

这是我在日志文件中收到的错误消息:
[2014-02-25 05:45:48,183][DEBUG][action.admin.indices.settings] [Miles Warren] failed to update settings on indices [teindex]
org.elasticsearch.ElasticSearchIllegalArgumentException: Can't update non dynamic settings[[index.analysis.analyzer.tindex_analyzer.tokenizer, index.analysis.analyzer.tsearch_analyzer.tokenizer, index.analysis.analyzer.tindex_analyzer.filter.0, index.analysis.analyzer.tsearch_analyzer.filter.0]] for open indices[[teindex]]
        at org.elasticsearch.cluster.metadata.MetaDataUpdateSettingsService$2.execute(MetaDataUpdateSettingsService.java:248)
        at org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run(InternalClusterService.java:300)
        at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:135)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
[2014-02-25 05:45:48,183][WARN ][org.xbib.elasticsearch.river.jdbc.JDBCRiver] [Miles Warren] [jdbc][tetours] failed to create index [teindex], disabling JDBC river...
org.elasticsearch.ElasticSearchIllegalArgumentException: Can't update non dynamic settings[[index.analysis.analyzer.tindex_analyzer.tokenizer, index.analysis.analyzer.tsearch_analyzer.tokenizer, index.analysis.analyzer.tindex_analyzer.filter.0, index.analysis.analyzer.tsearch_analyzer.filter.0]] for open indices[[teindex]]
        at org.elasticsearch.cluster.metadata.MetaDataUpdateSettingsService$2.execute(MetaDataUpdateSettingsService.java:248)
        at org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run(InternalClusterService.java:300)
        at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:135)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)

谁能找出问题所在?语法看起来正确。

最佳答案

您不能在实时索引上写入这些类型的设置(过滤器,分析器等)。您必须关闭索引,进行更改,然后再次打开

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-open-close.html

乍一看JDBCRiver的代码并没有显示任何简单的方法来处理它。

关于elasticsearch - 将Elasticsearch jriver jdbc插件与索引设置一起使用时发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22013385/

相关文章:

ruby - 使用 ruby gem ,而仅使用sinatra和 ruby (而不是铁轨),如何连接到盆景elasticsearch实例?

python - ElasticSearch 查询 pandas 数据框

json - JDBC、Elasticsearch 和 Postgresql Json 数据类型

elasticsearch - 如何使用jdbc River向elasticsearch添加多种对象类型?

ElasticSearch 多匹配查询 cross_fields 类型

elasticsearch - 内部命中的聚合

jsf - 在JSF中何处关闭打开的客户端或使用Java垃圾收集?

mysql - 使用 ElasticSearch JDBC river 从表中获取更改

elasticsearch 解析日期失败

java - 指定elasticsearch的JDK路径