序章
意义
化繁为间 九九归一
ES的出现主要解决Lucene使用复杂的问题
在早期已经逐渐的出现了全文检索,所以全文检索并不是新鲜的话题,但是检索领域的之前都是多个组件,各占一方,所以ES的第一个优势就是集成多个组件到自身 ,其次Apache有一个检索领域的类库Lucene,非常的强大,可以满足几乎所有的搜索难题,但是应用起来过于复杂,熟练的使用可能需要有拥有搜索引擎的学位,集成到自身的Java应用、等其他语言所构建的应用过于困难,而ES抓住这点,对Lucene进行RESTAPI封装,大大的简化了集成的难度。
关键词
索引
索引在ES里面有多种解释,它的多种解释主要来源于词性
- 名词(索引): 指代关系型数据库中的一个
数据库,存储关系型文档的地方 - 动词(索引):指代关系型数据库中的INSERT指令,如:索引一个文档表示存储一个文档到一个索引(名词)中
- 倒排索引:指代关系型数据库中的查询索引,如MySQL中的B+Tree索引,来提高检索速度,注意:默认的在ES每一个文档的属性都是有一个倒排索引的(被索引的)
添加数据
RESTAPI / 索引
测试数据以员工信息举例
索引:megacorp
文档:employee
属性:
{ "first_name" : "Douglas", "last_name" : "Fir", "age" : 35, "about": "I like to build cabinets", "interests": [ "forestry" ] }数量:3个
添加第一个员工 PUT
添加操作其实是对ES服务的访问交互,所以在添加操作中采用PUT方式进行员工数据的添加。
首先,准备添加员工信息的URL,其中要满足引用中的内容要求
-
ES添加员工URL:
127.0.0.1:9200/megacorp/employee/3 -
员工对象JSON:
{ "first_name" : "Douglas", "last_name" : "Fir", "age" : 35, "about": "I like to build cabinets", "interests": [ "forestry" ] } -
配置请求信息组,更改一些参数,来添加3个不同的员工到
megacorp索引中,发送3次PUT请求,完成添加
检索数据
ES中基本的检索很简单,只需要使用规定的请求方式/索引库/类型(文档)/ID 来获取一个JSON文档
-
请求示例
-
返回JSON
{ "_index": "megacorp", "_type": "employee", "_id": "3", "_version": 1, "found": true, "_source": { "first_name": "Douglas", "last_name": "Fir", "age": 35, "about": "I like to build cabinets", "interests": [ "forestry" ] } }