设置索引的默认分析器

时间:2016-01-20 08:10:58

标签: elasticsearch elasticsearch-plugin

首先我想设置ES的默认分析器,但失败了。然后根据其他问题和网站,我试图设置一个索引的默认分析器。但也有一些问题。

我配置了ik分析器,我可以设置一些字段的分析器,这是我的命令:

curl -XPUT localhost:9200/test

curl -XPUT localhost:9200/test/test/_mapping -d'{
 "test":{
   "properties":{
     "name":{
       "type":"string",
       "analyzer":"ik"
     }
   }
 }
}'

并收到消息:

{"acknowledged":true}

同样,它也符合我的意愿。

但是,如果我尝试设置索引的默认分析器:

curl -XPOST localhost:9200/test1?pretty -d '{                                                                           "index":{
"analysis" : {
            "analyzer" : {
                "default" : {
                    "type" : "ik"
                }
            }
        }
    }
}'

我会收到错误消息:

{
  "error" : {
    "root_cause" : [ {
      "type" : "index_creation_exception",
      "reason" : "failed to create index"
    } ],
    "type" : "illegal_argument_exception",
    "reason" : "no default analyzer configured"
  },
  "status" : 400
}

太奇怪了,不是吗? 期待您对此问题的看法。谢谢! :)

1 个答案:

答案 0 :(得分:8)

你几乎就在那里,你只是在你的路上错过了/_settings。这样做是这样的。另请注意,您需要close the index first,然后在更新分析器后重新打开它。

// close index
curl -XPOST 'localhost:9200/test1/_close'

                            add this to the path
                                     |
                                     v
curl -XPUT localhost:9200/test1/_settings?pretty -d '{                                                                           "index":{
"analysis" : {
            "analyzer" : {
                "default" : {
                    "type" : "ik"
                }
            }
        }
    }
}'

// re-open index
curl -XPOST 'localhost:9200/test1/_open'