当使用 Elasticsearch 的 Web API 进行交互时,以下是一些常用的功能和关键字:
1. 索引管理
1.1 - PUT /{index}
:创建一个新的索引。
如果重复发 PUT 请求 : http://127.0.0.1:9200/{index} 添加索引,会返回错误信息 :
1.2 - GET /{index}
:获取索引的信息。
1.3 - DELETE /{index}
:删除一个索引。
2. 文档管理
2.1 - PUT&POST /{index}/_doc/{id}
:创建或更新一个文档。
需要带一个请求体
{"title":"小米手机","category":"小米","images":"http://www.gulixueyuan.com/xm.jpg","price":3999.00
}
使用PUT只能创建文档,使用POST可以更新文档
2.2 - GET /{index}/_doc/{id}
:获取一个文档。
这里的ID和2.1的ID一样,都得是唯一ID
2.3 - DELETE /{index}/_doc/{id}
:删除一个文档。
3. 搜索
3.1 - GET /{index}/_search
:执行搜索操作。
直接返回全部数据,默认有分页size=10
3.2 - POST /{index}/_search
:执行搜索操作(使用请求体)。
可以参考ElasticSearch常用的几种查询方式,常见的查询方式有
1 term查询(精准查询)
2 math查询(分词匹配查询)
3 fuzzy查询(模糊查询)
4 wildcard(通配符查询)
5 bool查询(布尔查询)
{"query": { // 定义查询条件的主体"bool": { // 布尔查询组合多个子句"must": [ // 匹配所有指定查询子句,相当于逻辑与{"match": {"field1": "value1"}},{"range": { // 查询范围// gt:大于(greater than)// gte:大于等于(greater than or equal)// lt::小于(less than)// lte:小于等于(less than or equal)// eq:等于(equal)// neq:不等于"field2": {"gte": 10,"lte": 20}}}],"filter": [ // 定义过滤器,排除不符合条件的文档{"term": { // 精确匹配指定字段"field3": "value3"}}]}},"sort": [ // 排序规则{"field4": {"order": "asc"}}],"size": 10,"from": 0, // 指定结果从第几个文档开始返回"_source": ["field5", "field6"] // 要返回的字段列表
}
- 查询关键字:
match
、term
、range
、bool
、filter
等。
4. 聚合:
4.1 - GET /{index}/_search
:结合聚合操作执行搜索和聚合。
{"aggs":{//聚合操作"price_group":{//名称,随意起名"terms":{//分组"field":"price"//分组字段}}}
}
POST /{index}/_search
:结合聚合操作执行搜索和聚合(使用请求体)。- 聚合关键字:
aggs
、terms
、date_histogram
、sum
、avg
、max
、min
等。
-
排序与分页:
GET /{index}/_search
:通过sort
参数指定排序方式。GET /{index}/_search
:通过from
和size
参数指定分页。
-
过滤与条件:
GET /{index}/_search
:通过filter
参数进行过滤操作。GET /{index}/_search
:通过query
参数指定查询条件。
-
更新与删除:
POST /{index}/_update/{id}
:更新一个文档。POST /{index}/_delete/{id}
:删除一个文档。
-
批量操作:
POST /_bulk
:执行批量操作,包括创建、更新和删除文档。
-
索引设置与映射:
PUT /{index}/_settings
:修改索引的设置。PUT /{index}/_mapping
:定义索引的映射。
# PUT http://127.0.0.1:9200/user/_mapping{"properties": {"name":{"type": "text","index": true},"sex":{"type": "keyword","index": true},"tel":{"type": "keyword","index": false}}
}
name是text格式,可以被索引。
sex是keyword格式,不会被分词索引,只能被完全匹配
至于tel,被设置成inedx=false,因此无法在搜索的时候被索引。
- 聚合分析与统计:
GET /{index}/_stats
:获取索引的统计信息。GET /_nodes/stats
:获取节点的统计信息。
这只是一些常见的功能和关键字,Elasticsearch 的 Web API 还提供了更多高级功能和查询语法,以满足各种复杂的搜索和分析需求。您可以参考 Elasticsearch 的官方文档以获取更详细的信息和示例。