国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - elasticsearch插件開發(fā)教程

elasticsearch插件開發(fā)教程

2020-11-25 10:49wzjhoutai Java教程

這篇文章主要為大家詳細介紹了elasticsearch插件開發(fā)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下

檢索引擎Elasticsearch支持插件模式。有些時候你可能須要安裝一些插件。甚至自己開發(fā)插件,這里就提供一個開始ES插件開發(fā)演示樣例,ES版本號為1.5.2。

一、插件類繼承自org.elasticsearch.plugins.AbstractPlugin

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package org.elasticsearch.plugin.helloworld;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
 
import org.elasticsearch.common.component.LifecycleComponent;
import org.elasticsearch.common.inject.Module;
import org.elasticsearch.common.logging.ESLogger;
import org.elasticsearch.common.logging.Loggers;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.plugins.AbstractPlugin;
import org.elasticsearch.rest.RestModule;
 
public class HelloWorldPlugin extends AbstractPlugin {
 final ESLogger logger = Loggers.getLogger(getClass());
 
 @Override
 public String name() {
 //插件名稱
 return "HelloWorld";
 }
 
 @Override
 public String description() {
 //插件描寫敘述
 return "Hello World Plugin";
 }
 
 //處理模塊,由于系統(tǒng)中有非常多種Module,所以須要對其類型進行推斷
 @Override
 public void processModule(Module module) {
 if(module instanceof RestModule) {
  ((RestModule)module).addRestAction(HelloWorldHandler.class);
 }
 
 if(module instanceof HelloModule) {
  logger.info("############## process hello module #####################");
 }
 }
 
 @Override
 public Collection<Module> modules(Settings settings) {
 //創(chuàng)建自己的模塊集合
 //假設沒有自己定義模塊,則能夠返回空
 HelloModule helloModule = new HelloModule();
 ArrayList<Module> list = new ArrayList<>();
 list.add(helloModule);
 Collections.unmodifiableList(list);
 return list;
 }
 
 @SuppressWarnings("rawtypes")
 @Override
 public Collection<Class<? extends LifecycleComponent>> services() {
 //創(chuàng)建自己的服務類集合,服務類須要繼承自LifecycleComponent。ES會自己主動創(chuàng)建出服務類實例,并調用其start方法
 //假設沒有自己定義服務類。則能夠返回空
 Collection<Class<?
 extends LifecycleComponent>> list = new ArrayList<>();
 list.add(HelloService.class);
 return list;
 }
 
}

Module類事實上就是定義了依賴注入規(guī)則。假設不清楚,能夠去查看Google Guice的文檔,基本上是一致的。如上例中的HelloModule:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package org.elasticsearch.plugin.helloworld;
 
import org.elasticsearch.common.inject.AbstractModule;
import org.elasticsearch.common.inject.Scopes;
 
public class HelloModule extends AbstractModule {
 
 @Override
 protected void configure() {
 //將InjectableService接口類型綁定到InjectableServiceImpl實現(xiàn)類
 //在須要注入InjectableService的地方,就會使用InjectableServiceImpl實例
 bind(InjectableService.class).to(InjectableServiceImpl.class);
 //使HelloService為單例狀態(tài)
 bind(HelloService.class).in(Scopes.SINGLETON);
 }
 
}

不同的模塊有不同的處理方式,比如樣例中對于RestModule,加入了一個Handler:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package org.elasticsearch.plugin.helloworld;
 
import org.elasticsearch.client.Client;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.rest.BaseRestHandler;
import org.elasticsearch.rest.BytesRestResponse;
import org.elasticsearch.rest.RestChannel;
import org.elasticsearch.rest.RestController;
import org.elasticsearch.rest.RestRequest;
import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.rest.RestRequest.Method;
import org.elasticsearch.rest.RestResponse;
 
 
public class HelloWorldHandler extends BaseRestHandler {
 
 //注入對象
  @Inject
  protected HelloWorldHandler(Settings settings, RestController controller, Client client) {
 super(settings, controller, client);
 //將該Handler綁定到某訪問路徑
 controller.registerHandler(Method.GET, "/hello/", this);
 controller.registerHandler(Method.GET, "/hello/{name}", this);
 }
 
 //處理綁定路徑的請求訪問
 @Override
 protected void handleRequest(RestRequest request, RestChannel channel, Client client) throws Exception {
 logger.debug("HelloWorldAction.handleRequest called");
 final String name = request.hasParam("name") ? request.param("name") : "world";
 
 String content = "{\"success\":true, \"message\":\"hello " +name+ "\"}";
 
 RestResponse response = new BytesRestResponse(RestStatus.OK, BytesRestResponse.TEXT_CONTENT_TYPE, content);
 channel.sendResponse(response);
 }
}

最后在類路徑根文件夾下加入一個名為es-plugin.properties屬性文件,指定插件實現(xiàn)類:

?
1
plugin=org.elasticsearch.plugin.helloworld.HelloWorldPlugin

二、將插件打成jar包后安裝

如果ES_HOME代表Elasticsearch安裝文件夾。在ES_HOME/plugins文件夾下創(chuàng)建一個名為HelloWorld的文件夾。該文件夾名稱必須與插件名稱同樣(區(qū)分大寫和小寫),然后將jar包拷貝至HelloWorld文件夾,又一次啟動就可以,當你運行:
curl -GET localhost:9200/hello,就會返回對應結果了。

三、為插件加入頁面

假設你想為你的插件加入訪問頁面。則能夠在ES_HOME/plugins/HelloWorld文件夾下創(chuàng)建一個名為"_site"的文件夾,該文件夾名稱必須為_site,然后將對應的html頁面放置進_site文件夾就可以,假設放置了一個名為index.html文件,則能夠通過

localhost:9200/_plugin/HelloWorld/index.html進行訪問。
因為Elasticsearch提供了jsclientAPI。所以使用html靜態(tài)頁面與js就能夠完畢對應的功能了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲国产成人一区二区精品区 | 久久精品99国产精品日本 | 成人av视屏 | 精品无码久久久久国产 | 91色在线| 日韩精品一区在线 | 亚洲国产高清高潮精品美女 | 免费看一区二区三区 | 黄色mm视频 | 久久久久久久久久久精 | 中文字幕亚洲欧美日韩在线不卡 | 国产精品剧情一区二区三区 | 看一级片| 亚洲欧美制服诱惑 | 91麻豆蜜桃一区二区三区 | 国产精品久久久久久久久久免费看 | 亚洲 欧美 日韩在线 | 都市激情在线视频 | 在线观看免费黄视频 | 久久99精品国产麻豆婷婷洗澡 | 精品久久av| 久久伊人网视频 | 久久综合伊人 | 国产在线一区二区三区 | 免费黄色小视频 | 女同另类| 久久久久久天堂 | 成av在线 | 欧美成人免费视频 | 自拍第一页 | 毛片区 | 日韩精品一区二区三区第95 | 欧美成人激情 | 青草福利| a视频在线观看 | 中文字幕一区二区三区在线视频 | 综合久久网 | 日韩av高清 | 天天射天天干 | 自拍偷拍亚洲一区 | 久久在线视频 |