ElasticSearch 학습 총결산(8): 플러그인 개발
4488 단어 빅데이터 저장 및 분석
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 배포
명령 실행, 반환 결과 보기
curl -XGET 'localhost:9200/_masting/nodes?prefix=test'
4. Git 코드
전체 코드,https://github.com/Eric-aihua/esext.git얻다