使用 elasticsearch 连接自定义插件

wire custom plugin with elasticsearch

我已经为 ES 5.x.x 编写了一个插件,包含所有组件:Plugin、Factory、Provider、Analyzer、Filter(过滤器具有重要的逻辑)。 我用

测试了它
GET index/_analyze?analyzer=my_plugin_name

而且效果很好。 现在我想通过

将它与 ES 集成
PUT index/_settings -d @settings.json

但是接收错误

"caused_by" : {
  "type" : "illegal_argument_exception",
  "reason" : "Unknown filter type [MyPluginFactory class name: com.a.b.c.plugin.MyPluginFactory] for [my_filter]

ES 找到我的过滤器的正确方法是什么?在 settings.json 我设置了

"type" : "com.a.b.c.plugin.MyPluginFactory"

这是它应该如何工作的吗?这是完整的 settings.json:

 {   "settings": {
     "analysis": {
       "filter": {
         "my_filter" : {
           "type" : "com.a.b.c.plugin.MyPluginFactory"
         }
       },
       "analyzer": {
         "my_analyser": {
           "tokenizer": "standard",
           "filter": [
             "my_filter"
           ]}}}}}

插件是通过

安装的

elasticsearch-plugin install

好吧,爆炸.. 在我的插件中 class 我已经实现了 getAnalyzers(),但看起来为了能够设置过滤器,还必须实现 getTokenFilters()