文章目录
- 1.索引库操作
- 创建索引库:
- 删除索引库:
- 查询索引库:
- 修改索引库:
- 总结
- 2.文档操作
- 创建文档:
- 查询文档:
- 删除文档:
- 全量修改文档:
- 增量修改文档:
- 总结
- 3.DSL查询语法(前4个由query属性包裹)
- 1.全文查询(3种)
- match_all
- match
- multi_match
- 2.精确查询(2种)
- term
- range
- 3.地理查询(2种)
- geo-bounding_box
- geo_distance
- 4.复合查询(2种)
- function score Query
- Bool Query
- 5.搜索结果处理(3种)同级属性
- sort排序
- from/size分页
- higlight高亮
- 6.总结(4个顶级属性)
1.索引库操作
创建索引库:
PUT /索引库名
{"mapping":{"properties":{"字段名":{"type":"字段的类型"}//..略 }},
}//提高查询效率的方式
//将字段名1、2加入到all,那么查询直接搜索all一个字段效率提高2倍
PUT /索引库名
{"mapping":{"properties":{"字段名1":{"type":"字段的类型","copy_to":"all"},"字段名2":{"type":"字段的类型","copy_to":"all"},"all":{"type":"text","analyzer":"ik_max_word"} }},
}
//搭配查询使用
GET /索引库名
{"query":{"match":{"all":"搜索内容"}}
}
删除索引库:
DELETE /索引库名
查询索引库:
GET /索引库名
修改索引库:
PUT /索引库名/_mapping
{"properties":{"新字段名":{"type":"类型"}}
}
总结
只有创建、修改需要请求体
2.文档操作
创建文档:
POST /索引库名/_doc/文档id
{"字段1":"","字段2":"","字段3":{"字段3-1":"","字段3-2":""}
}
查询文档:
GET /索引名/_doc/文档id
删除文档:
DELETE /索引库名/_doc/文档id
全量修改文档:
//若文档id不存在就是新增操作,否则就是全部修改PUT /索引库名/ _doc/文档id
{"字段1":"","字段2":""
}
增量修改文档:
POST /索引库名/ _update/文档id
{"doc":{"需要修改的字段名":"新的值"}
}
总结
只有创建、修改需要请求体
3.DSL查询语法(前4个由query属性包裹)
1.全文查询(3种)
match_all
// 1.查询所有
GET /索引库名/_search
{"query": {"match_all": {}}
}
match
// 2.单个字段查询,建议创建文档的时候把多个要查询的字段copy_to到一个字段all,提高查询性能
//all字段名
GET /索引库名/_search
{"query": {"match": {"all": "乡愁"}}
}
multi_match
// 3.多个字段查询
GET /索引库名/_search
{"query": {"multi_match": {"query": "需要查询内容","fields": ["字段1","字段2"]}}
}
2.精确查询(2种)
term
# 1.根据词条精确值查询
GET /索引库名/_search
{"query": {"term": {"字段名1": {"value": "内容"}}}
}
range
# 2.根据值得范围查询
#有e结尾代表=
GET /mingyue/_search
{"query": {"range": {"age": {"gt": 10,"lte": 20}}}
}
3.地理查询(2种)
geo-bounding_box
// 1.查询geo_point值落在某个矩形范文内得所有文档,大白话就是两个点相连形成的矩形
// 用的比较少
GET /索引库名/_search
{"query":{"geo-bounding_box":{"geo_point类型的字段":{"top_left":{"lat":31.1,"lon":121.9},"buttom_right":{"lat":38.1,"lon":121.9}}}}
}
geo_distance
//2.查询指定中心点范围内得所有文档
// 用的多
GET /索引库名/_search
{"query":{"geo_distance":{"distance":"15km","geo_point类型的字段":"经度,纬度"}}
}
4.复合查询(2种)
function score Query
// 1.function score Query
GET /索引库名/_search
{"query":{"function_score":{# 原始查询规则"query":{"match":{"字段名":"内容"}},"functions":'[{"filter":{"term":{"id":"1"}},# 过滤条件"weight":10 #算分函数}],"boost_mode":"multiply" # 算分函数}}
}
Bool Query
// 2.Bool Query 4个属性
GET /索引库名/_search
{"query":{"bool":{"must":[#类似与{"term":{"字段名1":"内容"}}],"should":[#类似或{"term":{"字段名2":"内容1"}}{"term":{"字段名2":"内容2"}}],"must_not":[#类似非,不参与算分,意思是不匹配<=500的{"range":{"字段名3":{"lte":500}}}],"filter":[#必须匹配>=45,不参与算分{"range":{"字段名4":{"gte":45}}}],}}
}
5.搜索结果处理(3种)同级属性
sort排序
// 1.排序
GET /索引库名/_search
{"query":{//查询条件 略……},"sort":{"排序字段":"排序方式",# asc desc"_geo_distance":{"geo_point类型的字段名":"经度,纬度","geo_point类型的字段名":{ # 对象方式书写"lat":经度"lon":纬度},"order":"排序方式","unit":"km"# 单位}}
}
from/size分页
// 2.分页
GET /索引库名/_search
{"query":{//查询条件 略……},"sort":{"排序字段":"排序方式",# asc desc},"from":页码,"size":条数
}
higlight高亮
// 2.高亮
GET /索引库名/_search
{"query":{//查询条件 略……},"sort":{"排序字段":"排序方式",# asc desc},"highlight":{"fields":{# 指定要高亮的字段"字段名":{"require_field_match":"false" #搜索字段与高亮字段不一致需要加上}}},"from":页码,"size":条数
}
6.总结(4个顶级属性)
查询语法有4个顶级属性
分别是query、sort、from/size、highlight