Elasticsearch基本概念与RESTful接口

索引

索引(index)是elasticsearch对逻辑数据的逻辑存储,可以把索引看做关系型数据库中的表,索引的结构是为快速有效的全文索引准备的,特别是它不存储原始值。ES索引可以存放在一台机器或者多台服务器上,每个索引可以有一个或者多个分片,每个分片可以有多个副本。

文档

存储在ES中的主要实体叫文档(document),相当于关系型数据库表中的一行记录。

ES和MongoDB的文档类似,都可以有不同的结构,但ES的文档中,相同的字段必须有相同的类型,文档由多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫做多值字段,每个字段的类型,可以是文本、数值、日期等,也可以是复杂类型,比如子文档或者数组。

映射

所有文档在写进索引之前都会进行分析,如何将输入的文本分词,哪些词条会被过滤,这种行为叫做映射,一般由用户自己定义规则。

文档类型

在ES中,一个索引对象可以存储很多不同用途的对象

每个文档可以有不同的结构,不同的文档类型不能为相同的字段设置不同的类型。例如在一个索引的所有文档类型中,一个叫title的字段必须具有相同的类型。

RESTful API

在ES中,提供了功能丰富的RESTful API的操作,包括CRUD、创建索引、删除索引等操作

创建非结构化索引

在elasticsearch中创建索引时,不需要创建索引结构,即可写数据到索引中,实际上在ES底层会进行结构化操作,但此操作对用户是透明的。

#创建空索引
PUT /my_test_index
{
    "settings":{
        "index":{
            "number_of_shards":"2", #分片数
            "number_of_replicas":"0" #副本数
         }
     }
}

 

删除索引

DELETE /{索引}

在postman中删除

在elasticsearch-head中使用直接调用接口方式删除报错,应该是不能传递包体的原因,所以我们可以直接使用界面操作删除或者使用postman调用接口删除

 插入数据

POST /{索引}/{类型}/{id}

#es7以后

POST /{索引}/_doc/{id}

es6以后,去掉了类型(type)的概念,统一使用_doc替代,我跟着视频学习的时候,不管是传自定义type还是doc都各种报错:

最后偶然发现原来是_doc,终于插入数据成功:

这是不指定id的写法。如果指定id,则在地址后添加/id

指定id:

 

 更新数据

PUT /{索引}/_doc/{id}

查看更新结果:

 上述更新是全局更新,但是通常我们采用局部更新的方式

#我用的是es8  其他版本的es尤其是es6之前的请求方式会略有不同
POST /{索引}/_update/{id}/

 删除数据

DELETE /{索引}/_doc/{id}/

 查询数据

GET /{索引}/_doc/{id}/

 查询全部数据

GET /{索引}/_search

搜索数据

GET /{索引}/_search?q=age:20

 DSL搜索

es提供的一种丰富灵活的DSL查询,DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。

POST /{索引}/_search

#请求体
{
    "query":{
        "match":{ #match只是查询的一种
            "age":20
        }
    }

}

 高亮显示

 聚合

类似mysql中的group by

例:按照age分组

 doc_count:分组下的数量

猜你喜欢

转载自blog.csdn.net/knowwait/article/details/125393387