第一讲 elasticsearch2.4.3源码分析 Setti
2017-06-01 本文已影响0人
不是咸鱼
![](https://img.haomeiwen.com/i287197/40c2b2fa6f8e01ea.png)
如图所示,我们在使用elasticsearch时,首先先从Settings开始,那我们不禁想问,Settings到底为我们做了哪些事情?
那我们就得先看看这个Settings类时何方神圣了。这个Settings是一个final类,如下图所示:
![](https://img.haomeiwen.com/i287197/26067c632f215760.png)
从图中我们可以看到Settings实现了ToXcontent接口:
![](https://img.haomeiwen.com/i287197/690dccb402bea7fc.png)
上图也就是ToXContent的庐山真面目了。
我们从上图就能看出来,这个类一共有五个成员,一个方法,一个字段,两个静态内部类,和一个内部接口。这个类如果以后碰到相应的内容我们再进行分析,大家有个印象即可。好,那我们现在继续看Settings类。
我们现在看看Settings的settingBuilder()方法:
![](https://img.haomeiwen.com/i287197/0c4cde515f83167c.png)
如果我们看到,这使用了一个静态内部类来进行实例化。我们看看Builder类给我做了什么事情:
![](https://img.haomeiwen.com/i287197/44cc09c2612971e6.png)
Builder类在初始化的时候实例化了一个LinkedHashMap,这个map到底干什么用,其实是放我们put进去的数据,请各位看第一图的put方法,其实就是把数据放入到这个map中,看下图:
![](https://img.haomeiwen.com/i287197/f110fb59c623f67d.png)
我们调用Builder类的put方法把数据放入到map中后,我们调用了Builder的build()方法,我们看看这个方法干了什么事情:
![](https://img.haomeiwen.com/i287197/fc4d6ff0f93ae599.png)
代码很简单,就是将map给了Settings的构造函数,我们看看这个构造函数是怎么写的:
![](https://img.haomeiwen.com/i287197/35fd11c3a20b2d66.png)