ELK第二周笔记

2017-10-26  本文已影响0人  mov觉得高数好难

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”

上一篇 下一篇

猜你喜欢

热点阅读