ElasticSearch 학습 총결산(8): 플러그인 개발

본고는 주로 Elasticsearch 사용자 정의 REST 인터페이스의 플러그인 개발 절차를 총괄한다.
1. 플러그인 소개
이 플러그인은 논리가 비교적 간단합니다. 주로 지정한 접두사를 포함하는 노드 목록을 되돌려줍니다.
2. 코드 설명
플러그인은 주로 두 부분의 내용을 포함하는데, 한 부분은 플러그인에 대한 등록에 사용되고, 다른 한 부분은 업무 논리에 대한 처리를 책임진다
플러그인 등록 섹션:
public class CustomerRestActionPlugin extends Plugin implements ActionPlugin {
    public CustomerRestActionPlugin(){
        super();
        System.out.println("Plugin for node name search");
    }


    @Override
    public List<Class extends RestHandler>> getRestHandlers() {
        return Collections.singletonList(CustomerRestAction.class);
    }
}

비즈니스 논리 처리 섹션:
    @Override
    protected RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient nodeClient) throws IOException {
        final String nodePrefix = restRequest.param("prefix", "");
        return (channel) -> {

            nodeClient.admin().cluster().prepareNodesInfo().all().execute(new RestBuilderListener(channel) {
                @Override
                public RestResponse buildResponse(NodesInfoResponse nodesInfoResponse, XContentBuilder xContentBuilder) throws Exception {
                    List nodes = new ArrayList();
                    for (NodeInfo nodeInfo : nodesInfoResponse.getNodes()) {
                        if (nodePrefix.isEmpty()) {
                            nodes.add(nodeInfo.getNode().getName());
                        } else if (nodeInfo.getNode().getName().startsWith(nodePrefix)) {
                            nodes.add(nodeInfo.getNode().getName());
                        }
                    }
                    xContentBuilder.startObject().field("nodes", nodes).endObject();
                    return new BytesRestResponse(RestStatus.OK, xContentBuilder);
                }
            });

        };
    }

3. 패키지 배포
3.1 패키지 및 배포
다음 명령을 통해 압축 패키지를 생성합니다. 압축 패키지에는 주로jar 파일, 프로필 등이 포함됩니다.
mvn clean package

이 명령을 실행하면 target/release 디렉터리에elasticsearch-esext-5.1.1이라는 이름이 생성됩니다.zip의 압축 패키지
3.2 배포
  • elasticsearch/plugins 디렉터리에CustomerRestActionPlugin 하위 디렉터리 만들기
  • 압축된 패키지를 CustomerRestActionPlugin 디렉토리에 압축
  • ES 재가동
  • 3.3 검증
    명령 실행, 반환 결과 보기
     curl -XGET 'localhost:9200/_masting/nodes?prefix=test'

    4. Git 코드
    전체 코드,https://github.com/Eric-aihua/esext.git얻다

    좋은 웹페이지 즐겨찾기