doc: update elasticsearch.md (#623)
This commit is contained in:
		@@ -3,50 +3,55 @@ Elasticsearch 备忘清单
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
这是 [Elasticsearch](https://www.elastic.co/guide/index.html) 的官方文档。 你可以在这里找到 elasticsearch 的所有文档。
 | 
					这是 [Elasticsearch](https://www.elastic.co/guide/index.html) 的官方文档。 你可以在这里找到 elasticsearch 的所有文档。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并作为看源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
入门
 | 
					入门
 | 
				
			||||||
----
 | 
					---
 | 
				
			||||||
<!--rehype:body-class=cols-2-->
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 入门
 | 
					### 入门
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=row-span-2-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 安装介绍
 | 
					Elasticsearch 是一个基于 Lucene 库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### 下载
 | 
					#### 下载
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 注意
 | 
					注意: `${VERSION}` 需替换为指定版本,官方包有的功能只能试用,完整功能需要付费,请仔细阅读官网文档。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  version 需替换为指定版本
 | 
					#### Windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  官方包有的功能只能试用,完整功能需要付费,请仔细阅读官网文档。
 | 
					```
 | 
				
			||||||
 | 
					https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-windows-x86_64.zip
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- windows
 | 
					#### linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    下载地址:
 | 
					```shell
 | 
				
			||||||
 | 
					$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-linux-x86_64.tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-\${VERSION}-windows-x86_64.zip](https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-windows-x86_64.zip)
 | 
					$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-linux-x86_64.tar.gz.sha512
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- linux
 | 
					$ shasum -a 512 -c elasticsearch-${VERSION}-linux-x86_64.tar.gz.sha512 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					$ tar -xzf elasticsearch-${VERSION}-linux-x86_64.tar.gz
 | 
				
			||||||
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-linux-x86_64.tar.gz
 | 
					 | 
				
			||||||
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-linux-x86_64.tar.gz.sha512
 | 
					 | 
				
			||||||
    shasum -a 512 -c elasticsearch-${VERSION}-linux-x86_64.tar.gz.sha512 
 | 
					 | 
				
			||||||
    tar -xzf elasticsearch-${VERSION}-linux-x86_64.tar.gz
 | 
					 | 
				
			||||||
    cd elasticsearch-${VERSION}/
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- macos
 | 
					$ cd elasticsearch-${VERSION}/
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					#### macos
 | 
				
			||||||
    curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-darwin-x86_64.tar.gz
 | 
					 | 
				
			||||||
    curl https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-darwin-x86_64.tar.gz.sha512 | shasum -a 512 -c - 
 | 
					 | 
				
			||||||
    tar -xzf elasticsearch-${VERSION}-darwin-x86_64.tar.gz
 | 
					 | 
				
			||||||
    cd elasticsearch-${VERSION}/ 
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### 启动
 | 
					```shell
 | 
				
			||||||
 | 
					$ curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-darwin-x86_64.tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ curl https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${VERSION}-darwin-x86_64.tar.gz.sha512 | shasum -a 512 -c - 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ tar -xzf elasticsearch-${VERSION}-darwin-x86_64.tar.gz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ cd elasticsearch-${VERSION}/ 
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 启动
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=col-span-2-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 启动 Elasticsearch
 | 
					- 启动 Elasticsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -59,13 +64,15 @@ Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布
 | 
				
			|||||||
    ```shell
 | 
					    ```shell
 | 
				
			||||||
    export ELASTIC_PASSWORD="your_password"
 | 
					    export ELASTIC_PASSWORD="your_password"
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 测试是否启动成功
 | 
					- 测试是否启动成功
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					    ```shell
 | 
				
			||||||
    curl --cacert $ES_HOME/config/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200 
 | 
					    curl --cacert $ES_HOME/config/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200 
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					    <!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    成功则返回样例如下:
 | 
					- 成功则返回样例如下:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```json
 | 
					    ```json
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -86,10 +93,9 @@ Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布
 | 
				
			|||||||
        "tagline" : "You Know, for Search"
 | 
					        "tagline" : "You Know, for Search"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					<!--rehype:className=style-timeline-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Elasticsearch 和 RDMS 的对比
 | 
				
			||||||
 | 
					 | 
				
			||||||
### elasticsearch 和 RDMS 的对比
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
| RDMS                    | elasticsearch     |
 | 
					| RDMS                    | elasticsearch     |
 | 
				
			||||||
| ----------------------- | ----------------- |
 | 
					| ----------------------- | ----------------- |
 | 
				
			||||||
@@ -103,275 +109,219 @@ Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布
 | 
				
			|||||||
| SELECT * FROM tablename | GET http://...    |
 | 
					| SELECT * FROM tablename | GET http://...    |
 | 
				
			||||||
| UPDATE table SET        | PUT http://...    |
 | 
					| UPDATE table SET        | PUT http://...    |
 | 
				
			||||||
| DELETE                  | DELETE http://... |
 | 
					| DELETE                  | DELETE http://... |
 | 
				
			||||||
 | 
					<!--rehype:className=left-align show-header-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
操作
 | 
					操作
 | 
				
			||||||
----
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
说明:
 | 
					### 基础语法规则
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    1. 以 user_info 为索引名称,类比数据库,
 | 
					```shell
 | 
				
			||||||
    2. 字段有 id,username,password,nickname,age,info,remark 为例进行演示。
 | 
					$ curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# DSL语法
 | 
					- `VERB HTTP` 方法:GET, POST, PUT, HEAD, DELETE
 | 
				
			||||||
 | 
					- `PROTOCOL`:http 或者 https 协议(只有在 Elasticsearch 前面有 https 代理的时候可用)
 | 
				
			||||||
 | 
					- `HOST`:Elasticsearch 集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫 localhost
 | 
				
			||||||
 | 
					- `PORT`:Elasticsearch HTTP 服务所在的端口,默认为 9200
 | 
				
			||||||
 | 
					- `PATH API 路径`(例如_count 将返回集群中文档的数量),PATH:可以包含多个组件,例如_cluster/stats 或者_nodes/stats/jvm
 | 
				
			||||||
 | 
					- `QUERY_STRING`:一些可选的查询请求参数,例如?pretty 参数将使请求返回更加美观易读的 JSON 数据
 | 
				
			||||||
 | 
					- `BODY`:一个 JSON 格式的请求主体(如果请求需要的话)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 基础语法规则
 | 
					### 创建索引
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=col-span-2 row-span-3-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'`
 | 
					#### 统一请求 api 前缀
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					http://localhost:9200/
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- VERB HTTP 方法:GET, POST, PUT, HEAD, DELETE
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- PROTOCOL:http 或者 https 协议(只有在 Elasticsearch 前面有 https 代理的时候可用)
 | 
					```json
 | 
				
			||||||
 | 
					PUT /user_info
 | 
				
			||||||
- HOST:Elasticsearch 集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫 localhost
 | 
					{
 | 
				
			||||||
 | 
					  "settings": { "number_of_replicas": 1, "number_of_shards": 1 },
 | 
				
			||||||
- PORT:Elasticsearch HTTP 服务所在的端口,默认为 9200 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- PATH API 路径(例如_count 将返回集群中文档的数量),PATH:可以包含多个组件,例如_cluster/stats 或者_nodes/stats/jvm
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- QUERY_STRING:一些可选的查询请求参数,例如?pretty 参数将使请求返回更加美观易读的 JSON 数据
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- BODY:一个 JSON 格式的请求主体(如果请求需要的话) 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# 索引的操作
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## 创建索引
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- 统一请求 api 前缀 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    http://localhost:9200/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- DSL语法
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ```shell
 | 
					 | 
				
			||||||
    PUT /user_info
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "settings": {
 | 
					 | 
				
			||||||
            "number_of_replicas": 1,
 | 
					 | 
				
			||||||
            "number_of_shards": 1
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
  "mappings": {
 | 
					  "mappings": {
 | 
				
			||||||
    "properties": {
 | 
					    "properties": {
 | 
				
			||||||
                "id": {
 | 
					      "id": { "type": "long", "index": true },
 | 
				
			||||||
                    "type": "long",
 | 
					      "username": { "type": "keyword", "index": true },
 | 
				
			||||||
                    "index": true
 | 
					      "nickname": { "type": "keyword", "index": true },
 | 
				
			||||||
                },
 | 
					      "password": { "type": "keyword", "index": false },
 | 
				
			||||||
                "username": {
 | 
					      "age": { "type": "integer", "index": true },
 | 
				
			||||||
                    "type": "keyword",
 | 
					      "info": { "type": "text", "index": true },
 | 
				
			||||||
                    "index": true
 | 
					      "remark": { "type": "text", "index": true }
 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "nickname": {
 | 
					 | 
				
			||||||
                    "type": "keyword",
 | 
					 | 
				
			||||||
                    "index": true
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "password": {
 | 
					 | 
				
			||||||
                    "type": "keyword",
 | 
					 | 
				
			||||||
                    "index": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "age": {
 | 
					 | 
				
			||||||
                    "type": "integer",
 | 
					 | 
				
			||||||
                    "index": true
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "info": {
 | 
					 | 
				
			||||||
                    "type": "text",
 | 
					 | 
				
			||||||
                    "index": true
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "remark": {
 | 
					 | 
				
			||||||
                    "type": "text",
 | 
					 | 
				
			||||||
                    "index": true
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
        }
 | 
					}
 | 
				
			||||||
    }
 | 
					```
 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl 
 | 
					#### curl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    curl -XPUT "http://localhost:9200/user_info" -H 'Content-Type: application/json' -d'{ "settings": { "number_of_replicas": 1, "number_of_shards": 1 }, "mappings": { "properties": { "id": { "type": "long", "index": true }, "username": { "type": "keyword", "index": true }, "nickname": { "type": "keyword", "index": true }, "password": { "type": "keyword", "index": false }, "age": { "type": "integer", "index": true }, "info": { "type": "text", "index": true }, "remark": { "type": "text", "index": true } } } }'
 | 
					curl -XPUT "http://localhost:9200/user_info" -H 'Content-Type: application/json' -d'{ "settings": { "number_of_replicas": 1, "number_of_shards": 1 }, "mappings": { "properties": { "id": { "type": "long", "index": true }, "username": { "type": "keyword", "index": true }, "nickname": { "type": "keyword", "index": true }, "password": { "type": "keyword", "index": false }, "age": { "type": "integer", "index": true }, "info": { "type": "text", "index": true }, "remark": { "type": "text", "index": true } } } }'
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 参数说明:
 | 
					#### 参数说明
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    settings:索引信息设置
 | 
					- `settings`: 设置索引的信息
 | 
				
			||||||
 | 
					- `number_of_shards`: 每个索引的主分片数,一旦索引创建后,无法修改此配置
 | 
				
			||||||
 | 
					- `number_of_replicas`: 每个主分片的副本数,此配置可随时修改
 | 
				
			||||||
 | 
					- `mappings`: 索引映射定义
 | 
				
			||||||
 | 
					- `properties`: 字段定义。使用 JSON 配置,键为字段名称(自定义),值为嵌套 JSON,其中 `type` 指定字段的类型
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    number_of_shards:每个索引的主分片数,这个配置在索引创建后不能修改
 | 
					其他参数很多,请参考官网资料
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    number_of_replicas:每个主分片的副本数,这个配置可以随时修改。
 | 
					### 删除索引
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    mappings:索引映射定义
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    properties:字段定义 properties里是json配置,key为字段名称(自定义名称),value是个嵌套json,type是指定字段的类型。
 | 
					```http
 | 
				
			||||||
 | 
					DELETE /user_info
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    -- 其他参数很多,请参考官网资料
 | 
					#### curl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 删除索引
 | 
					```shell
 | 
				
			||||||
 | 
					curl -XDELETE "http://localhost:9200/user_info"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					### 判断索引是否存在
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					#### DSL语法
 | 
				
			||||||
    DELETE /user_info
 | 
					 | 
				
			||||||
    ``` 
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					```http
 | 
				
			||||||
 | 
					# 查看索引是否存在
 | 
				
			||||||
 | 
					HEAD /user_info
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					#### curl
 | 
				
			||||||
    curl -XDELETE "http://localhost:9200/user_info"
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```shell
 | 
				
			||||||
 | 
					# 查看索引是否存在
 | 
				
			||||||
 | 
					curl -XHEAD "http://localhost:9200/user_info"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 判断索引是否存在
 | 
					### 开启/关闭索引
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					#### 开启DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```shell
 | 
				
			||||||
    # 查看索引是否存在
 | 
					POST /user_info/_open
 | 
				
			||||||
    HEAD /user_info
 | 
					```
 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					`curl`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    # 查看索引是否存在
 | 
					curl -XPOST "http://localhost:9200/user_info/_open"
 | 
				
			||||||
    curl -XHEAD "http://localhost:9200/user_info"
 | 
					```
 | 
				
			||||||
    ```
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 开启/关闭索引
 | 
					#### 关闭 DSL 语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 开启DSL语法
 | 
					```shell
 | 
				
			||||||
 | 
					POST /user_info/_close
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					`curl`
 | 
				
			||||||
    # 开启索引
 | 
					 | 
				
			||||||
    POST /user_info/_open
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					```shell
 | 
				
			||||||
 | 
					curl -XPOST "http://localhost:9200/user_info/_close"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					### 索引的别名
 | 
				
			||||||
    # 开启索引
 | 
					<!--rehype:wrap-class=col-span-2-->
 | 
				
			||||||
    curl -XPOST "http://localhost:9200/user_info/_open"
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
-  关闭DSL语法
 | 
					- 添加别名 DSL 语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```shell
 | 
				
			||||||
    # 关闭索引
 | 
					POST /user_info/_alias/user1
 | 
				
			||||||
    POST /user_info/_close
 | 
					```
 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- curl
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    ```shell
 | 
					 | 
				
			||||||
    # 关闭索引
 | 
					 | 
				
			||||||
    curl -XPOST "http://localhost:9200/user_info/_close"
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## 索引的别名
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- 添加别名DSL语法
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ```http
 | 
					 | 
				
			||||||
    # 添加别名
 | 
					 | 
				
			||||||
    POST /user_info/_alias/user1
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- 添加别名curl
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    ```shell
 | 
					 | 
				
			||||||
    # 添加别名
 | 
					 | 
				
			||||||
    curl -XPOST "http://localhost:9200/user_info/_alias/user1"
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```shell
 | 
				
			||||||
 | 
					curl -XPOST "http://localhost:9200/user_info/_alias/user1"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 删除别名DSL语法
 | 
					- 删除别名DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ```http
 | 
					```shell
 | 
				
			||||||
  # 删除别名
 | 
					DELETE /user_info/_alias/user1
 | 
				
			||||||
  DELETE /user_info/_alias/user1
 | 
					```
 | 
				
			||||||
  ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 删除别名curl
 | 
					```shell
 | 
				
			||||||
 | 
					curl -XDELETE "http://localhost:9200/user_info/_alias/user1"
 | 
				
			||||||
    ```shell
 | 
					```
 | 
				
			||||||
    # 删除别名
 | 
					 | 
				
			||||||
    curl -XDELETE "http://localhost:9200/user_info/_alias/user1"
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 查看别名DSL语法
 | 
					- 查看别名DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```shell
 | 
				
			||||||
    # 查看别名
 | 
					GET /_alias/user1
 | 
				
			||||||
    GET /_alias/user1
 | 
					```
 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```shell
 | 
				
			||||||
 | 
					curl -XGET "http://localhost:9200/_alias/useraa"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 查看别名curl
 | 
					Mapping 操作
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
    ```shell
 | 
					 | 
				
			||||||
    # 查看别名
 | 
					 | 
				
			||||||
    curl -XGET "http://localhost:9200/_alias/useraa"
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## mapping 操作
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
类似修改数据库中列的操作
 | 
					类似修改数据库中列的操作
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 查看 mapping
 | 
					### 查看 mapping
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http 
 | 
					```shell
 | 
				
			||||||
    # 查看mapping
 | 
					GET /user_info/_mapping
 | 
				
			||||||
    GET /user_info/_mapping
 | 
					```
 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    # 查看mapping
 | 
					curl -XGET "http://localhost:9200/user_info/_mapping"
 | 
				
			||||||
    curl -XGET "http://localhost:9200/user_info/_mapping"
 | 
					```
 | 
				
			||||||
    ```
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 新增 mapping
 | 
					### 新增 mapping
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=col-span-2-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 注意
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  **需要注意的是字段映射只能增加,不能更改删除**
 | 
					```shell
 | 
				
			||||||
 | 
					PUT /user_info/_mapping
 | 
				
			||||||
- DSL语法
 | 
					{
 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    ```http
 | 
					 | 
				
			||||||
    # 新增mapping 
 | 
					 | 
				
			||||||
    PUT /user_info/_mapping
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    "properties":{
 | 
					    "properties":{
 | 
				
			||||||
            "sex":{
 | 
					        "sex":{ "type":"keyword" }
 | 
				
			||||||
                "type":"keyword"
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
        }
 | 
					}
 | 
				
			||||||
    }
 | 
					```
 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    # 新增mapping 
 | 
					curl -XPUT "http://localhost:9200/user_info/_mapping" -H 'Content-Type: application/json' -d'{ "properties":{ "sex":{ "type":"keyword" } } }'
 | 
				
			||||||
    curl -XPUT "http://localhost:9200/user_info/_mapping" -H 'Content-Type: application/json' -d'{ "properties":{ "sex":{ "type":"keyword" } } }'
 | 
					```
 | 
				
			||||||
    ```
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 文档的操作
 | 
					`注意`: 需要注意的是字段映射只能增加,不能更改删除
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##  添加文档
 | 
					文档的操作
 | 
				
			||||||
- DSL语法
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					### 添加文档
 | 
				
			||||||
    # 新增一条数据
 | 
					<!--rehype:wrap-class=row-span-2-->
 | 
				
			||||||
    POST /user_info/_doc/1
 | 
					
 | 
				
			||||||
    {
 | 
					#### 新增一条数据 - DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```shell
 | 
				
			||||||
 | 
					POST /user_info/_doc/1
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
    "id":1,
 | 
					    "id":1,
 | 
				
			||||||
    "username":"username",
 | 
					    "username":"username",
 | 
				
			||||||
    "password":"123456",
 | 
					    "password":"123456",
 | 
				
			||||||
@@ -380,115 +330,103 @@ Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布
 | 
				
			|||||||
    "info":"一些个人相关的介绍",
 | 
					    "info":"一些个人相关的介绍",
 | 
				
			||||||
    "remark":"备注信息",
 | 
					    "remark":"备注信息",
 | 
				
			||||||
    "sex":"男"
 | 
					    "sex":"男"
 | 
				
			||||||
    }
 | 
					}
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    # 新增一条数据
 | 
					curl -XPOST "http://localhost:9200/user_info/_doc/1" -H 'Content-Type: application/json' -d'{ "id":1, "username":"username", "password":"123456", "nickname":"nickname", "age":18, "info":"一些个人相关的介绍", "remark":"备注信息", "sex":"男" }'
 | 
				
			||||||
    curl -XPOST "http://localhost:9200/user_info/_doc/1" -H 'Content-Type: application/json' -d'{ "id":1, "username":"username", "password":"123456", "nickname":"nickname", "age":18, "info":"一些个人相关的介绍", "remark":"备注信息", "sex":"男" }'
 | 
					```
 | 
				
			||||||
    ```
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 查询指定索引的所有文档
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=row-span-2-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 查询指定索引的所有文档
 | 
					类似数据库中的 `select * from user_info;`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 类似数据库中的 `select * from user_info;`
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					```json
 | 
				
			||||||
  
 | 
					GET /user_info/_search
 | 
				
			||||||
    ```http
 | 
					{
 | 
				
			||||||
    GET /user_info/_search
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    "query": {
 | 
					    "query": {
 | 
				
			||||||
        "match_all": {}
 | 
					        "match_all": {}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					}
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "match_all": {} } }'
 | 
					curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "match_all": {} } }'
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 通过 id 查询文档
 | 
					### 通过 id 查询文档
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 类似数据库中的 `select * from user_info where id = 1;`
 | 
					类似数据库中的 `select * from user_info where id = 1;`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```shell
 | 
				
			||||||
    # 通过id查询
 | 
					GET /user_info/_doc/1
 | 
				
			||||||
    GET /user_info/_doc/1
 | 
					```
 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    # 通过id查询
 | 
					curl -XGET "http://localhost:9200/user_info/_doc/1"
 | 
				
			||||||
    curl -XGET "http://localhost:9200/user_info/_doc/1"
 | 
					```
 | 
				
			||||||
    ```
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## 通过条件查询文档
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### 精确查找
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- 类似数据库中的 `select * from user_info where username = 'username';`
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
- DSL语法
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    ```http
 | 
					 | 
				
			||||||
    # 通过条件查询
 | 
					 | 
				
			||||||
    GET /user_info/_search
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "query": {
 | 
					 | 
				
			||||||
            "bool": {
 | 
					 | 
				
			||||||
                "must": [
 | 
					 | 
				
			||||||
                    { "term": { "username": "username" } }
 | 
					 | 
				
			||||||
                ]
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- curl
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    ```shell
 | 
					 | 
				
			||||||
    # 通过条件查询
 | 
					 | 
				
			||||||
    curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "bool": { "must": [ { "term": { "username": "username" } } ] } } }'
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 模糊查找
 | 
					### 模糊查找
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 类似数据库中的模糊查询 `select * from user_info where info like '%人%';`
 | 
					类似数据库中的模糊查询 `select * from user_info where info like '%人%';`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```json
 | 
				
			||||||
    # 模糊查找
 | 
					GET /user_info/_search
 | 
				
			||||||
    GET /user_info/_search
 | 
					{
 | 
				
			||||||
    {
 | 
					    "query": { "match": { "info": "人" } }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 通过条件查询文档
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=col-span-2-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					类似数据库中的 `select * from user_info where username = 'username';`
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					#### 通过条件查询 - DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```json
 | 
				
			||||||
 | 
					GET /user_info/_search
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
    "query": {
 | 
					    "query": {
 | 
				
			||||||
            "match": {
 | 
					        "bool": {
 | 
				
			||||||
            "info": "人"
 | 
					            "must": [ { "term": { "username": "username" } } ]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					}
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```shell
 | 
				
			||||||
 | 
					curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "bool": { "must": [ { "term": { "username": "username" } } ] } } }'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 范围查找
 | 
					### 范围查找
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 类似数据库中的范围查询 `select * from user_info where age between 18 and 30;`
 | 
					类似数据库中的范围查询 `select * from user_info where age between 18 and 30;`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```json
 | 
				
			||||||
    GET /user_info/_search
 | 
					GET /user_info/_search
 | 
				
			||||||
    {
 | 
					{
 | 
				
			||||||
    "query": {
 | 
					    "query": {
 | 
				
			||||||
        "range": {
 | 
					        "range": {
 | 
				
			||||||
            "age": {
 | 
					            "age": {
 | 
				
			||||||
@@ -497,75 +435,26 @@ Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					}
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "range": { "age": { "gt": 18, "lt": 30 } } } }'
 | 
					curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "range": { "age": { "gt": 18, "lt": 30 } } } }'
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
### limit 查找
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- 类似数据库中的 limit 查询 `select * from user_info limit 10;`
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
- DSL语法
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    ```http
 | 
					 | 
				
			||||||
    GET /user_info/_search  
 | 
					 | 
				
			||||||
    {  
 | 
					 | 
				
			||||||
        "size": 10,  
 | 
					 | 
				
			||||||
        "query": {  
 | 
					 | 
				
			||||||
            "match_all": {}     
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- curl
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    ```shell
 | 
					 | 
				
			||||||
    curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "size": 1, "query": { "match_all": {} } }'
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### limit offset 查找
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- 类似数据库中的 limit 查询 `select * from user_info limit 0,10;`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- DSL语法
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    ```http
 | 
					 | 
				
			||||||
    GET /user_info/_search  
 | 
					 | 
				
			||||||
    {  
 | 
					 | 
				
			||||||
        "size": 2,  
 | 
					 | 
				
			||||||
        "from": 1,  
 | 
					 | 
				
			||||||
        "query": {  
 | 
					 | 
				
			||||||
            "match_all": {}  
 | 
					 | 
				
			||||||
        }  
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- curl
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    ```shell
 | 
					 | 
				
			||||||
    curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "size": 2, "from": 1, "query": { "match_all": {} } }'
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- 参数说明
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  - "size": 10表示我们想要返回的结果数量是10条。
 | 
					 | 
				
			||||||
  - "from": 20表示我们想要从结果集中的第21条记录开始返回(因为偏移是从0开始的)。
 | 
					 | 
				
			||||||
  - "query": `{"match_all": {}}` 是一个匹配所有文档的查询,因为我们没有特定的查询条件,只是想要分页结果。
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
### and 查询
 | 
					### and 查询
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=col-span-2-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 类似数据库中的 and 查询 `select * from user_info where age > 18 and sex = '男';`
 | 
					类似数据库中的 and 查询 `select * from user_info where age > 18 and sex = '男';`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```json
 | 
				
			||||||
    GET /user_info/_search  
 | 
					GET /user_info/_search  
 | 
				
			||||||
    {  
 | 
					{  
 | 
				
			||||||
  "query": {
 | 
					  "query": {
 | 
				
			||||||
    "bool": {
 | 
					    "bool": {
 | 
				
			||||||
      "must": [
 | 
					      "must": [
 | 
				
			||||||
@@ -574,92 +463,144 @@ Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布
 | 
				
			|||||||
      ]   
 | 
					      ]   
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```shell
 | 
				
			||||||
 | 
					curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "bool": { "must": [ { "range": { "age": { "gt": 17 } } }, { "term": { "sex": "男" } } ] } } }'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### limit 查找
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					类似数据库中的 limit 查询 `select * from user_info limit 10;`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```json
 | 
				
			||||||
 | 
					GET /user_info/_search  
 | 
				
			||||||
 | 
					{  
 | 
				
			||||||
 | 
					    "size": 10,  
 | 
				
			||||||
 | 
					    "query": {  
 | 
				
			||||||
 | 
					        "match_all": {}     
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    ```
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "bool": { "must": [ { "range": { "age": { "gt": 17 } } }, { "term": { "sex": "男" } } ] } } }'
 | 
					curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "size": 1, "query": { "match_all": {} } }'
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### limit offset 查找
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					类似数据库中的 limit 查询 `select * from user_info limit 0,10;`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```http
 | 
				
			||||||
 | 
					GET /user_info/_search  
 | 
				
			||||||
 | 
					{  
 | 
				
			||||||
 | 
					    "size": 2,  
 | 
				
			||||||
 | 
					    "from": 1,  
 | 
				
			||||||
 | 
					    "query": {  
 | 
				
			||||||
 | 
					        "match_all": {}  
 | 
				
			||||||
 | 
					    }  
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```shell
 | 
				
			||||||
 | 
					curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "size": 2, "from": 1, "query": { "match_all": {} } }'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### 参数说明
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					- `size`: 10 表示我们想要返回的结果数量是10条
 | 
				
			||||||
 | 
					- `from`: 20 表示我们想要从结果集中的第21条记录开始返回(因为偏移是从0开始的)
 | 
				
			||||||
 | 
					- `query`: `{"match_all": {}}` 是一个匹配所有文档的查询,因为我们没有特定的查询条件,只是想要分页结果
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### or 查询
 | 
					### or 查询
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=col-span-2-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 类似数据库中的 or 查询 `select * from user_info where age > 18 or sex = '男';`
 | 
					类似数据库中的 or 查询 `select * from user_info where age > 18 or sex = '男';`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```json
 | 
				
			||||||
    GET /user_info/_search
 | 
					GET /user_info/_search
 | 
				
			||||||
    {
 | 
					{
 | 
				
			||||||
    "query": {
 | 
					    "query": {
 | 
				
			||||||
        "bool": {
 | 
					        "bool": {
 | 
				
			||||||
        "should": [
 | 
					        "should": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                "range": {
 | 
					                "range": {
 | 
				
			||||||
                        "age": {
 | 
					                    "age": { "gt": 18 }
 | 
				
			||||||
                            "gt": 18
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "term": {
 | 
					                "term": { "sex": "男" }
 | 
				
			||||||
                        "sex": "男"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					}
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "bool": { "should": [ { "range": { "age": { "gt": 18 } } }, { "term": { "sex": "男" } } ] } } }'
 | 
					curl -XGET "http://localhost:9200/user_info/_search" -H 'Content-Type: application/json' -d'{ "query": { "bool": { "should": [ { "range": { "age": { "gt": 18 } } }, { "term": { "sex": "男" } } ] } } }'
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					删除文档
 | 
				
			||||||
## 删除文档
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 删除指定 id
 | 
					### 删除指定 id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 类似数据库中的 delete 查询 `delete from user_info where id = 3;`
 | 
					类似数据库中的 delete 查询 `delete from user_info where id = 3;`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- DSL语法
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```shell
 | 
				
			||||||
    # 删除文档
 | 
					# 删除文档
 | 
				
			||||||
    DELETE /user_info/_doc/3
 | 
					DELETE /user_info/_doc/3
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- curl
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					```shell
 | 
				
			||||||
    # 删除文档
 | 
					# 删除文档
 | 
				
			||||||
    curl -XDELETE "http://localhost:9200/user_info/_doc/3"
 | 
					curl -XDELETE "http://localhost:9200/user_info/_doc/3"
 | 
				
			||||||
    ```
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 删除指定条件
 | 
					### 删除指定条件
 | 
				
			||||||
 | 
					<!--rehype:wrap-class=col-span-2-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 类似数据库中的 delete 查询 `delete from user_info where age > 18;`
 | 
					类似数据库中的 delete 查询 `delete from user_info where age > 18;`
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
- DSL语法
 | 
					#### DSL语法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```http
 | 
					```json
 | 
				
			||||||
    POST /user_info/_delete_by_query
 | 
					POST /user_info/_delete_by_query
 | 
				
			||||||
    {
 | 
					{
 | 
				
			||||||
    "query": {
 | 
					    "query": {
 | 
				
			||||||
            "range": {
 | 
					        "range": { "age": { "gt": 18 } }
 | 
				
			||||||
                "age": {
 | 
					 | 
				
			||||||
                    "gt": 18
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
            }
 | 
					}
 | 
				
			||||||
        }
 | 
					```
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    ```
 | 
					 | 
				
			||||||
- curl
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```shell
 | 
					---
 | 
				
			||||||
   curl -XPOST "http://localhost:9200/user_info/_delete_by_query" -H 'Content-Type: application/json' -d'{"query":{"range":{"age":{"gt":18}}}}'
 | 
					
 | 
				
			||||||
    ```
 | 
					```shell
 | 
				
			||||||
 | 
					curl -XPOST "http://localhost:9200/user_info/_delete_by_query" -H 'Content-Type: application/json' -d'{"query":{"range":{"age":{"gt":18}}}}'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					<!--rehype:className=wrap-text-->
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user