doc: update elasticsearch.md (#623)
This commit is contained in:
parent
5c34078de5
commit
dd0d19cf1c
@ -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-->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user