ElasticSearch
restful风格
1. PUT—创建文档(指定文档id)
格式: PUT /索引名称/类型名称/文档id {}
案例:
(I) 创建一个索引
(II)创建指定字段类型的索引(如果没有指定类型,es会默认配置)
put /test04
{
"mappings":{
"properties":{
"name":{
"type":"text"
},
"age":{
"type":"long"
},
"birthday":{
"type":"date"
}
}
}
}
2. POST
(I)修改文档
格式: POST /索引名称/类型名称/_update {}
(II)查询所有数据
格式: POST /索引名称/类型名称/_update {}
(III)创建文档
格式: POST /索引名称/类型名称 {}
案例1: 修改文档
案例2:查询所有数据
案例3:创建文档
3. DELETE—删除文档
格式: DELETE /索引名称/类型名称/文档id {}
4. GET—通过文档id查询文档
格式: GET /索引名称/类型名称/文档id {}
案例
精准查询(输入javascript可以查到数据)
复杂查询
1. 简单的模糊查询
GET /test02/_doc/_search
{
"query":{
"match":{
"name":"张"
}
}
}
2. 多条件查询—must(相当于and)
GET /test02/_doc/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"name":"张三"
}
},
{
"match":{
"age": 14
}
}
]
}
}
}
3. should查询—相当于or
GET /test02/_doc/_search
{
"query":{
"bool":{
"should":[
{
"match":{
"name":"张三"
}
},
{
"match":{
"age": 14
}
}
]
}
}
}
4. must_not查询—相当于不等于
GET /test02/_doc/_search
{
"query":{
"bool":{
"must_not":[
{
"match":{
"age": 14
}
}
]
}
}
}
5. 过滤结果—filter
GET /test02/_doc/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"name": "张三"
}
}
],
"filter":{
"range":{
"age":{
"gt":10,
"lt":25
}
}
}
}
}
}
-
gt 大于
-
gte 大于等于
-
lt 小于
-
lte 小于等于!
6. 匹配多条件查询
-- 新建一个数组类型的字段,进行匹配多条件查询
put /test09
{
"mappings":{
"properties":{
"name":{
"type":"text"
},
"tags":{
"type":"text"
}
}
}
}
-- 添加数据
PUT /test09/_doc/3
{
"name":"djskfj",
"arr": ["女","技术"]
}
7. 查询指定字段使用—"_source"
GET /test02/_doc/_search
{
"query":{
"match":{
"name":"张"
}
},
"_source":["name","age"]
}
8. 对结果进行排序—“sort"
GET /test02/_doc/_search
{
"query":{
"match":{
"name":"张"
}
},
"sort":[
{
"age":{
"order":"desc"
}
}
]
}
9. 分页查询—from size
GET /test02/_doc/_search
{
"query":{
"match":{
"name":"张"
}
},
"sort":[
{
"age":{
"order":"desc"
}
}
],
"from":0,
"size":1
}
10. 高亮查询
GET /test10/_doc/_search
{
"query":{
"match":{
"name":"中国"
}
},
"highlight":{
"fields":{
"name":{}
}
}
}
关于分词:
term ,直接查询精确的 ,term 查询是直接通过倒排索引指定的词条进程精确查找的(比较快)
match,会使用分词器解析!(先分析文档,然后在通过分析的文档进行查询!)
两个类型 text keyword
-- 类型是text
GET /test10/_doc/_search
{
"query":{
"term":{
"name":"中"
}
}
}
```·
![fen.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pLmxvbGkubmV0LzIwMjAvMDYvMTAvdlFCbThWbDRmTGtDRXFvLnBuZw?x-oss-process=image/format,png)
```sql
-- 类型是keyword
GET /test10/_doc/_search
{
"query":{
"term":{
"desc":"超越一切"
}
}
}