Elasticsearch 查詢語法
query
查询一级标签
query
二级标签
prefix wildcard
constant_score
filter
prefix 前缀匹配,文档中的词语以搜索的词汇开头
{field:value}
term
代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇
{field:value}
match
match和term的区别是,match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器,而term查询不会有分析器分析的过程
match查询相当于模糊匹配,只包含其中一部分关键词就行
{field:value}
match_all 没有参数,查询出来所有
{}
match_phrase 匹配一个短语,给一个短语词,匹配
{field:value}
multi_match 匹配多个字段
{
"query": {
"multi_match": {
"query": "caoke2",
"fields": [
"msg",
"code"
]
}
}
}
range
{"age":{"lt":10,"gt":1}}
-- 以上两级关键字 不能同时使用 多关键字需要用bool
bool 布尔查询,匹配多个条件,下面的关键字中可以把上面的再嵌套一遍 bool中不能包含range,要用filter包裹
must should must_not filter
多个查询条件用数组包裹
highlight 自定义标签的前后缀,fields 里面的字段要是query中查询的字段
"highlight":{
"pre_tags":[
"<aaa>"
],
"post_tags":[
"</aaa>"
],
"require_field_match":true,
"fields":{
"msg":{
"fragment_size":1000,
"number_of_fragments":0,
"fragment_offset":0
}
}
}
from 查询的结果取范围开始
size 查询的结果取范围结束
sort 排序
"sort": [
{
"age": "desc"
}
]
_source 包含or排除字段
{"includes":["code"],"excludes":[]}
script_fields
aggs 聚合
"aggregations":{
"term_agg":{
"terms":{
"field":"age", 对字段分组
"size":10, 返回的条数
"order":[{ 对返回的结果排序,可以多条
"min_agg":"desc"
}]
},
"aggregations":{ 分组后需要统计,可以多个
"min_agg":{
"min":{
"field":"age"
}
}
}
}
}