Query:处理的是此文档与之的匹配程度,会计算_score(相关度分数)
Filter:仅仅计算是否匹配,回答的是“是”或者“否”,不计算分数。频繁使用的filter将被自动缓存
例:
GET /_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Search" }},
{ "match": { "content": "Elasticsearch" }}
],
"filter": [
{ "term": { "status": "published" }},
{ "range": { "publish_date": { "gte": "2015-01-01" }}}
]
}
}
}
Bool Query中,
must:匹配文档中必须出现该分句,并且会对分数产生影响
filter:匹配文档中必须出现该分句,但是不对分数产生影响
should:匹配一个或者多的should分句
must_not:匹配文档中必须不能出现该分句
例子:
POST _search
{
"query": {
"bool" : {
"must" : {
"term" : { "user" : "kimchy" }
},
"filter": {
"term" : { "tag" : "tech" }
},
"must_not" : {
"range" : {
"age" : { "gte" : 10, "lte" : 20 }
}
},
"should" : [
{ "term" : { "tag" : "wow" } },
{ "term" : { "tag" : "elasticsearch" } }
],
"minimum_should_match" : 1,
"boost" : 1.0
}
}
}
其中boost是字句权重
Aggregations:
固定形式:
"aggregations" : {
"<aggregation_name>" : {
"<aggregation_type>" : {
<aggregation_body>
}
[,"meta" : { [<meta_data_body>] } ]?
[,"aggregations" : { [<sub_aggregation>]+ } ]?
}
[,"<aggregation_name_2>" : { ... } ]*
}
例如计算平均值:
{
"aggs" : {
"avg_grade" : { "avg" : { "field" : "grade" } }
}
}
一个脚本化的例子:
"aggs" : {
...
"aggs" : {
"avg_corrected_grade" : {
"avg" : {
"field" : "grade",
"script" : {
"lang": "painless",
"inline": "_value * params.correction",
"params" : {
"correction" : 1.2
}
}
}
}
}
}
}
处理缺失值:
{
"aggs" : {
"grade_avg" : {
"avg" : {
"field" : "grade",
"missing": 10
}
}
}
}
去重查询:
{
"aggs" : {
"author_count" : {
"cardinality" : {
"field" : "author"
}
}
}
}
关于_all字段:
PUT my_index
{
"mappings": {
"type_1": {
"properties": {...}
},
"type_2": {
"_all": {
"enabled": false
},
"properties": {...}
}
}
}
该字段在type_1中是有效的,2中则完全无效
Kibana部分开始...
添加完以后,可以在这里进行一些简易的搜索
画一个入门图...好好玩...
现在我们给这个饼图加上一个维度——年龄:
一个入门的柱状图,用的莎士比亚的表,配置见图:
注:因为在一开始我们将play_name定义为“keyword”,所以他只能被整个匹配
如果想让Y轴不从0开始,从最小值开始,可以去Options里选择“Scale Y-Axis to data bounds”