笔记九:Request Body 跟 Query DSL 简介
Request Body Search
- 将查询语句通过HTTP Request Body 发送给Elasticsearch
- Query DSL
POST /movies,404_idx/_search?ignore_unavailable=true { "profile":true, "query":{ "match_all" : {} // 查询所有的文档 } }
分页
- From 从 0 开始 默认返回10个结果
- 获取靠后的翻页,成本较高
POST /kibana_sample_data_ecommerce/_search { "from":10, "size":20 "query":{ "match_all":{} }
排序
- 最好在“数字型”与“日期型”字段上排序
- 因为对于多值类型或分析过的字段排序,系统会选一个值,无法得知该值
GET kinaba_sample_data_ecommerce/_search { "sort":[{"order_date":"desc}], "from":10, "size":5, "query":{ "match_all":{} }
_source filtering
- 如果_source 没有存储,那就只返回匹配的文档元数据
- _source 支持使用通配符
- _source[“name* “,”desc*”]
脚本字段
- 能算出新的字段
- 用例:订单中有不同的汇率,需要结合汇率对订单价格进行排序
#脚本字段
GET kibana_sample_data_ecommerce/_search
{
"script_fields": {
"new_field": {
"script": {
"lang": "painless",
"source": "doc['order_date'].value+'hello'"
}
}
},
"query": {
"match_all": {}
}
}
使用查询表达式 - Match
POST movies/_search
{
"query": {
"match": {
"title": "Last Christmas" // 相当于 OR 可出现其中1个
}
}
}
POST movies/_search
{
"query": {
"match": {
"title": {
"query": "Last Christmas",
"operator": "AND"
}
}
}
}
短语搜索 - Match Phrase
POST movies/_search
{
"query": {
"match_phrase": {
"title":{
"query": "one love"
"slop":1 //中间可以一个其他词
}
}
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接