ES的基本用法(转)

ES的基本概念

    1> 集群和节点

一个es集群是由一个或多和es节点组成的集合

每一个集群都有一个名字, 如之前的wali

每个节点都有自己的名字, 如之前的master, slave1, slave2

节点是可以存储数据, 参与索引数据等的独立服务

 

2> 索引(类似于数据库里面的database)

索引是含有相同属性的文档集合

索引在es中是通过一个名字来识别的, 必须是英文字母小写, 且不含中划线

 

3> 类型(相当于sql中的table)

一个索引可以定义一个或多个类型, 文档必须属于一个类型

 

4> 文档(相当于sql中的一行记录)

文档是可以被索引的基本数据单位

 

5> 分片

每个索引都有多个分片, 每个分片都是一个luncene索引

分片的好处: 分摊索引的搜索压力, 分片还支持水平的拓展和拆分以及分布式的操作, 可以提高搜索和其他处理的效率

6> 备份

拷贝一个分片就完成了分片的备份

备份的好处: 当主分片失败或者挂掉, 备份就可以代替分片进行操作, 进而提高了es的可用性, 备份的分片还可以进行搜索操作, 以分摊搜索的压力.

ES在创建索引时, 默认创建5个分片, 一份备份, 可以修改, 分片的数量只能在创建索引的时候指定, 索引创建后就不能修改分片的数量了, 而备份是可以动态修改的

 

2.2 ES的基本用法

ES以RESTFul风格来命名API的, 其API的基本格式如下

http://<ip>:<port>/<索引>/<类型>/<文档id>

ES的动作是以http方法来决定的: 常用的http方法: GET/PUT/POST/DELETE

 

Eg1, 创建索引, 结合head插件创建索引的实例

返回”概览”查看创建情况

创建索引分为: 结构化创建与非结构化创建

查看索引是否是结构化的方法

Mappings是结构化的一个关键词, 其后内容是空的, 说明这个索引是一个非结构化的索引

 

创建结构化索引的方法

点击head插件的”复合查询”

 

验证json后, 提交请求,

 

返回head插件”概览查看”

 

Head插件中编写json发送请求比较复杂, 可以使用postman或者是fiddler等工具进行请求的发送

请求数据的json格式

{

    "settings": {

        "number_of_shards": 3,

        "number_of_replicas": 1

    },

    "mappings": {

        "man": {

            "properties": {

                "name": {

                    "type": "text"

                },

                "country": {

                    "type": "keyword"

                },

                "age": {

                    "type": "integer"

                },

                "date": {

                    "type": "date",

                    "format": "yyyy-MM-dd HH:mm:ss||yyyy:MM:dd||epoch_millis"

                }

            }

        },

        "woman": {}

    }

}

 

2.2.1> 数据插入

文档id, 唯一索引值, 指向文档数据

2.2.1.1 指定文档id插入

使用http中的put方法,

插入时输入的ip地址, 如http://192.168.253.129:9200/people/man/1

请求参数依次为:索引名称/类型名称/文档id

请求参数

{

  "name": "瓦力",

  "country": "China",

  "age": 30,

  "date": "1987-03-07 12:12:12"

}

Head插件中”数据浏览”

2.2.1.2 自动产生文档id插入

使用http中的post方法,

插入时输入的ip地址, 如http://192.168.253.129:9200/people/man

请求参数

{

  "name": "超重瓦力",

  "country": "China",

  "age": 40,

  "date": "1977-03-07 12:12:12"

}

响应结果

2.2.2> 修改文档数据

2.2.2.1 直接修改文档

http方法: post方法

请求地址:  http://192.168.253.129:9200/people/man/1/_update

关键词: _update, doc

请求参数

{

    "doc": {

        "name": "谁是瓦力"

    }

}

“doc”为关键字, 要修改的文档放在doc中, 实例修改了type为people索引下man中id为1 的name属性

返回的结果

可以在head插件中”数据浏览”中验证修改结果

 

2.2.2.2 脚本修改文档

通过脚本修改的api格式与直接修改的是一致的

http方法: post方法

请求地址:  http://192.168.253.129:9200/people/man/1/_update

请求参数

{

  "script": {

    "lang": "painless",

    "inline": "ctx._source.age += 30"

  }

}

关键字”script”: 标志以脚本的方式修改文档

“lang”: 表示以何种脚本语言进行修改, “painless”表示以es内置的脚本语言进行修改. 此外es还支持多种脚本语言, 如Python, js等等

“inline”:指定脚本内容 “ctx”代表es上下文, _source 代表文档

可以在head插件中”数据浏览”检查修改数据

 

此外还有其他的参数设置方式, 例如将参数放到外面

{

  "script": {

    "lang": "painless",

    "inline": "ctx._source.name = params.name; ctx._source.age = params.age",

    "params": {

      "age": 30,

      "name": "谁是瓦力"

    }

  }

}

2.2.3> 删除

2.2.3.1 删除文档

http方法: delete

请求路径http://192.168.253.129:9200/people/man/1

2.2.3.1 删除索引

1. 可以通过head插件进行删除

2. 通过api删除

Http方法: delete

链接地址: http://192.168.253.129:9200/book
 

分类: ElasticSearch

转载自:https://www.cnblogs.com/rodge-run/p/7760308.html

### Elasticsearch 入门教程:基本操作与使用指南 #### 创建索引 为了使数据能够在Elasticsearch中被查询,首先需要创建一个索引。索引可以视为数据库中的表,在这里定义了文档结构及其映射关系。 ```json PUT /my-index-000001 { "settings": { "number_of_shards": 1, "number_of_replicas": 1 } } ``` 此命令会创建一个新的名为`my-index-000001`的索引,并设置了分片数量和副本数[^2]。 #### 单条写入文档 向已存在的索引内添加新记录的过程称为写入文档。每一条记录都是JSON格式的数据对象,可以通过HTTP POST请求来实现这一过程。 ```json POST /my-index-000001/_doc/1 { "title": "Elasticsearch Basics", "content": "An introduction to using Elasticsearch." } ``` 这条语句表示往指定索引下的 `_doc` 类型里插入了一篇ID为 `1` 的文章[^4]。 #### 批量写入文档 当有大量文档待导入时,采用批量方式能显著提高效率。Bulk API允许一次性提交多个动作(如新增、修改或移除),从而减少网络往返次数。 ```json POST /_bulk { "index" : { "_index" : "my-index-000001", "_id" : "2" } } { "title" : "Advanced Search Techniques", "content":"Exploring advanced search techniques." } { "create" : { "_index" : "my-index-000001", "_id" : "3" } } { "title" : "Data Analysis with ES", "content":"Using Elasticsearch for data analysis tasks." } ``` 以上例子展示了如何利用 bulk 请求连续执行两个不同的索引操作。 #### 更新现有文档 对于已经存在于索引内的文档,如果仅需更改部分内容,则可通过部分更新的方式完成而不必重新上传整个文件。 ```json POST /my-index-000001/_update/1 { "doc": { "tags":["tutorial"] } } ``` 这段代码片段说明了怎样给 ID 为 `1` 的那篇文章增加标签字段。 #### 删除文档 最后,若要彻底清除某份资料,只需发送 DELETE 方法至对应路径即可。 ```json DELETE /my-index-000001/_doc/1 ``` 该指令用于永久性地从系统中去除编号为 `1` 的那份材料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值