一、环境搭建
0、搭建好maven环境,装好eclipse及maven插件
1、从github下载源码:https://github.com/elastic/elasticsearch
2、可能会报错:Plugin execution not covered by lifecycle configuration
则需要修改pom文件,将报错插件配置移到pluginManagement下:
<build><pluginManagement>
<plugins>
<plugin><!--报错插件 -->
</plugin>
</plugins>
</pluginManagement>
</build>
如果错误节点在parent上,修改父项目的pom
3、一切正常后,运行运行
org.elasticsearch.bootstrap.Elasticsearch即可启动es。
(抛出异常:NoSuchFileException[target\eclipse_run\config],先不管它)
访问http://localhost:9200就能看到熟悉的"you know,for search"了
二、rest访问入口:Action
先来看看es是怎么提供rest服务的吧。
es用Action类来处理rest请求,所有Action实现类在org.elasticsearch.rest.action.RestActionModule中注册自己负责处理的rest url:
protected void configure() { ....bind(RestMainAction.class).asEagerSingleton(); bind(RestNodesInfoAction.class).asEagerSingleton(); bind(RestNodesStatsAction.class).asEagerSingleton(); ....
}
public class RestSearchAction extends BaseRestHandler {@Inject public RestSearchAction(Settings settings, RestController controller, Client client) { super(settings, controller, client); controller.registerHandler(GET, "/_search", this); controller.registerHandler(POST, "/_search", this); controller.registerHandler(GET, "/{index}/_search", this); controller.registerHandler(POST, "/{index}/_search", this);
...
当发送请求时,Action的parseSearchRequest进行解析,然后进入handleRequest处理
所以,在想了解的Action服务类上打个断点,看看它是怎么工作的吧~~
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于