当前位置: 首页 > elasticsearch, 搜索 > 正文

一步一步教你开发elasticsearch插件(一)

1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

在实际应用中,我们怎么开发一个elasticsearch插件呢。我们就以ik分词插件为例。一步一步进行开发。
1.首先要继承AnalysisModule.AnalysisBinderProcessor类,绑定ik插件的processer

1
2
3
4
5
6
7
8
9
10
11
12
13
public class IkAnalysisBinderProcessor extends AnalysisModule.AnalysisBinderProcessor {
 
    @Override public void processTokenFilters(TokenFiltersBindings tokenFiltersBindings) {
 
    }
 
 
    @Override public void processAnalyzers(AnalyzersBindings analyzersBindings) {
        //绑定ik插件的processer
        analyzersBindings.processAnalyzer("ik", IkAnalyzerProvider.class);
        super.processAnalyzers(analyzersBindings);
    }
}

2.继承AbstractIndexAnalyzerProvider类,实现用ik分词器去分词

1
2
3
4
5
6
7
8
9
10
11
12
public class IkAnalysisBinderProcessor extends AnalysisModule.AnalysisBinderProcessor {
 
    @Override public void processTokenFilters(TokenFiltersBindings tokenFiltersBindings) {
 
    }
 
 
    @Override public void processAnalyzers(AnalyzersBindings analyzersBindings) {
        analyzersBindings.processAnalyzer("ik", IkAnalyzerProvider.class);
        super.processAnalyzers(analyzersBindings);
    }
}

3.继续AbstractPlugin类,实现ik插件绑定在elasticsearch上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class AnalysisIkPlugin extends AbstractPlugin {
 
    @Override public String name() {
        return "analysis-ik";
    }
 
 
    @Override public String description() {
        return "ik analysis";
    }
 
 
    @Override public void processModule(Module module) {
        if (module instanceof AnalysisModule) {
            AnalysisModule analysisModule = (AnalysisModule) module;
            analysisModule.addProcessor(new IkAnalysisBinderProcessor());
        }
    }
}

具体源码参考:
1.https://github.com/awnuxkjy/es-ik
2.elasticsearch ik分词插件es-ik发布了

本文固定链接: http://www.chepoo.com/setp-to-setp-develop-elasticsearch-plugin-one.html | IT技术精华网

一步一步教你开发elasticsearch插件(一):目前有2 条留言

  1. 沙发
    :

    第二个步骤复制代码有误~~~

    [回复]
    • :

      谢谢,少了一段代码。关于processTokenizers函数。

      [回复]

发表评论