最近在学习Elasticsearch,先给大家推荐一本书 Mastering Elasticsearch 深入理解 Elasticsearch
这本书我觉得实用性比较高,目前我还在看,这本书教会了我怎么用,怎么理解使用原理吧
下面开始介绍一下:
这段话是我粘贴的哈:
Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架。
但是 Lucene 只是一个框架,要充分利用它的功能,你需要使用 JAVA,并且在你的程序中集成 Lucene。更糟的是,你需要做很多的学习了解,才能明白它是如何运行的,Lucene 确实非常复杂。
Elasticsearch 使用 Lucene 作为内部引擎,但是在你使用它做全文搜索时,只需要使用统一开发好的API即可,而并不需要了解其背后复杂的 Lucene 的运行原理。
当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:
这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或者任何你喜欢的程序语言与 ES 的 RESTful API 进行交流。
Elasticsearch 的上手是非常简单的。它附带了很多非常合理的默认值,这让初学者很好地避免一上手就要面对复杂的理论,它安装好了就可以使用了,用很小的学习成本就可以变得很有生产力。
随着学习的深入,你还可以使用 Elasticsearch 更多高级的功能,整个引擎可以很灵活地进行配置。你可以根据自身需求来定制属于你自己的 Elasticsearch。
这里边提到了:索引,类型,文档,字段
分别什么意思呢
索引:数据库
类型:表
文档:行
字段:列
Elasticsearch 是一种面向文档的搜索引擎,所以说,把他理解成数据库不就好了,这也是他为什么速度这么快,并且实时的原因,既然是一个数据库,那就不用多说,肯定会有 select,update,delete
对应的分别是get,post,put,delete
Elasticsearch 作为一个封装好的开源框架,我们其实可以直接调用JAVA KPI就好了,
在Elasticsearch中,每一个文档都有一个版本号码。每当文档产生变化时(包括删除),_version
就会增大。在《版本控制》中,我们将会详细讲解如何使用_version
的数字来确认你的程序不会随意替换掉不想覆盖的数据。
在很多程序中,大部分实体或者对象都被序列化为包含键和值的JSON对象。键是一个字段或者属性的名字,值可以是一个字符串、数字、布尔值、对象、数组或者是其他的特殊类型,比如代表日期的字符串或者代表地理位置的对象
通常情况下,我们使用可以互换对象和文档。然而,还是有一个区别的。对象(object )仅仅是一个JSON对象,类似于哈希,哈希映射,字典或关联数组。对象(Objects)则可以包含其他对象(Objects)。
在Elasticsearch中,文档这个单词有特殊的含义。它指的是在Elasticsearch中被存储到唯一ID下的由最高级或者根对象 (root object )序列化而来的JSON。
这也就是说 Elasicsearch 其实也是存储的json形式,索引不就是相当于他的id让他极其快速的找到这个文档,也就是这个表的这个行吗?
这样也差不多理解他的时候原理了吧,大家可以动手试一试,感兴趣的可以了解一下Lucene 底层,Lucene还是最强大的