오랜만에 Elasticsearch Plugin을 개발해 보았다.
내용은 NLP Service로 Rest Request를 보내서 응답결과를 Token으로 사용하는 ProxyTokenizer 개발이다.
목적에 따른 참조 사이트만 나열해 보겠다.
Scaffolds 참조해서 프로젝트 구조를 잡는다.
https://github.com/codelibs/elasticsearch-plugin-sample아래 Nori Analysis Plugin을 참조해서 Elasitcsearch Plugin 코드를 작성한다.
https://github.com/elastic/elasticsearch/tree/master/plugins/analysis-nori아래 Nori Tokenizer를 참조해서 Tokenizer코드를 작성한다.
https://github.com/apache/lucene-solr/tree/master/lucene/analysis/noriAnalysis말고도 다양한 Elasticsearch Plugin 예제들이다.
https://github.com/elastic/elasticsearch/tree/master/plugins/examples
이슈가 발생한 것은
Java Security Manager 쪽이었는데 Http Request가 있어서 해당하는 Permission을 policy에 작성해 주는 것인데
plugin-security.policy처럼 Plugin단위에 작성했는데 적용이 되지 않아
일단 JVM의 java.policy에 작성하여 일단 트러블슈팅하였다.
grant {
permission java.net.SocketPermission "*:23456", "accept, listen, connect, resolve";
permission java.io.FilePermission "<<ALL FILES>>">>", "read, write";
};
https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugin-authors.html