网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

ES学习笔记之---从源码启动ES-创新互联

开发中需要用到ES的插件, 开发ES插件需要了解ES的内部结构, 于是再次开始学习ES的源码。一方面了解插件开发的套路,一方面了解get接口的实现细节。

创新互联建站是专业的阜城网站建设公司,阜城接单;提供成都网站建设、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行阜城网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

了解ES的原理,源码是文档最好的补充。源码甚至比文档更有助于了解ES的内部核心。

首先从git上clone下源码:

git clone https://github.com/elastic/elasticsearch.git

cd elasticsearch

git tag -l

git checkout v2.4.5

sh run.sh

如果使用run.sh没有成功,再试一次, 有可能是maven的jar包没有下载到。
这里使用v2.4.5是由于在编译es的过程中会用到相关的jar包,而https://oss.sonatype.org/content/repositories/snapshots/org/elasticsearch/rest-api-spec/并不是所有版本的jar包都有, 所以从中选取了v2.4.5, 这跟手机选号一样,纯属个人主观。

这里JDK要换成1.8, 1.7的jdk maven会报protocol_verson错误。
编译成功后,就会生成elasticsearch的zip包, 需要解压,因为源码中会用到conf文件。

cd /home/shgy/es_workspace/elasticsearch/distribution/zip/target/releases/
unzip elasticsearch-2.4.5-SNAPSHOT.zip 
mv elasticsearch-2.4.5-SNAPSHOT /opt/

编译完成后, 将源码import到intellij中, intellij的启动参数

vm options : 

-Des.path.home=/opt/elasticsearch-2.4.5-SNAPSHOT

Program arguments: 

start

启动成功后使用

curl http://localhost:9200

即可看到经典的

{
  "name" : "Ruckus",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "ZIl7g86YRiGv8Dqz4DCoAQ",
  "version" : {
    "number" : "2.4.5",
    "build_hash" : "c849dd13904f53e63e88efc33b2ceeda0b6a1276",
    "build_timestamp" : "2018-08-12T01:30:55Z",
    "build_snapshot" : true,
    "lucene_version" : "5.5.4"
  },
  "tagline" : "You Know, for Search"
}

从源码启动成功后, 可以做的事情就多了。 比如看看You Know, for Search是怎么来的;看看ES内部的index/get/search等接口内部是如何运行的。
更重要的是, 可以将相关接口的逻辑套用, 依样画葫芦开发plugin实现自己的业务逻辑。

以debug的方式启动es后, 第一个断点可以打在org.elasticsearch.http.netty.HttpRequestHandler.messageReceived(),这是netty的编程模式。

比如You Know, for Search, 通过debug, 可以了解到其调用链为:
HttpRequestHandler.messageReceived() --- RestMainAction.handleRequest()

Rest_xxx_Action是es所有http接口通用的套路。比如:

RestSearchAction    _search
RestGetAction    /{index}/{type}/{id}
RestIndexAction    /{index}/{type}/{id} 
......

可以说, Rest_xxx_Action是es的外壳, 整个ES的结构大致如下图所示:
ES学习笔记之---从源码启动ES

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:ES学习笔记之---从源码启动ES-创新互联
分享链接:http://bjjierui.cn/article/dooejd.html

其他资讯