Elasticsearch基础语法记录

本文示例从《Elasticsearch权威指南》获取,仅作为读书笔记。如需要查看详情,可以查看该书的具体内容。

一、查看ES是否启动成功

GET localhost:9200/?pretty

{
    "name": "DESKTOP-8MG3VHL",
    "cluster_name": "elasticsearch",
    "cluster_uuid": "zmUJSU-FSkKrLG5UhXrBwQ",
    "version": {
        "number": "7.6.2",
        "build_flavor": "default",
        "build_type": "tar",
        "build_hash": "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
        "build_date": "2020-03-26T06:34:37.794943Z",
        "build_snapshot": false,
        "lucene_version": "8.4.0",
        "minimum_wire_compatibility_version": "6.8.0",
        "minimum_index_compatibility_version": "6.0.0-beta1"
    },
    "tagline": "You Know, for Search"
}
  • 以下示例省略:http://localhost:9200

二、查询文档数量

GET /_count?pretty

{
    "count": 20,
    "_shards": {
        "total": 4,
        "successful": 4,
        "skipped": 0,
        "failed": 0
    }
}

同样效果

GET /_count?pretty
{
    "query":{
        "match_all":{}
    }
}

三、基础操作

elasticsearch操作基于restful api进行操作,所以在操作的过程中需要注意请求方法

1、添加文档

PUT /megacory/employee/1 
{
    "first_name":"John",
    "last_name":"Smith",
    "age":25,
    "about":"I love to go rock climbing",
    "interests":["sports","music"]
}

2、获取文档

GET /megacory/employee/1   
{
    "_index" : "megacorp",
    "_type" : "employee",
    "_id" : "1",
    "_version" : 1,
    "found" : true,
    "_source" : {
        "first_name" : "John",
        "last_name" : "Smith",
        "age" : 25,
        "about" : "I love to go rock climbing",
        "interests": [ "sports", "music" ]
      }
}

3、删除文档

DELETE /megacory/employee/1 
  • 如果我们要编辑数据,可以使用PUT方法进行更新操作。

4、搜索指定index、type的所有文档信息

GET /megacory/employee/_search     

5、搜索指定关键字的内容

GET /megacory/employee/_search?last_name:Smith

四、DSL语句查询(Domain Specific Language)

1、基于match关键字查询

GET /megacory/employee/_search
{
    "query":{
        "match":{
            "last_name":"Smith"
        }
    }
}

2、通过filter过滤查询

GET /megacory/employee/_search
{
    "filtered":{
        "filter":{
            "range":{
                "age":{"gt":30}
            }
        },
        "query":{
            "match":{
                "last_name":"Smith"
            }
        }
    }
}

filtered关键字对query查询出的数据用filter中的条件进行过滤,查询出age大于30的数据

五、全文检索

elasticsearch通过_score的方式进行搜索匹配度排序,分值越高的越靠前

GET /megacory/employee/_search
{
    "query":{
        "match":{
            "about":"rock climbing"
        }
    }
}

搜索出多条记录,按照_score进行排序。此时查询的结果中包含rockclimbingrock climbing的都会被查询出来

六、短语搜索

GET /megacory/employess/_search
{
    "query":{
        "match_phrase":{
            "about":"rock climbing"
        }
    }
}

通过短语搜索关键字match_phrase进行匹配时,匹配的内容严格按照rock climbing进行匹配,匹配过程中不会把关键字进行拆分。

七、高亮搜索关键字

GET /megacory/employess/_search
{
    "query":{
        "match_phrase":{
            "about":"rokc climbing"
        }
    },
    "highlight":{
        "fields":{
            "about":{}
        }
    }
}

通过关键字highlight进行高亮显示设置。当设置了高亮属性后,查询结果会给关键字加上标签

八、聚合分析

聚合分析通过关键字agg进行操作。

1、根据某个字段统计

GET /megacory/employees/_search
{
    "aggs":{
        "all_interests":{
            "terms":{
                "field":"interests"
            }
        }
    }
}
  • aggs 聚合分析操作关键字
  • all_interests 自定义返回结果key
  • term 指定需要分析的字段名
  • 返回结果:
{
    "aggregations": {
        "all_interests": {
          "buckets": [ 
              { 
                  "key": "music", 
                  "doc_count": 2 
              },
              {
                  "key": "forestry", 
                  "doc_count": 1 
              },
              { 
                  "key": "sports", 
                  "doc_count": 1 
              } 
          ] 
        } 
    }
}
  • 结果中默认生成以doc_count为key的文档统计数量,该统计数量对应指定field
  • aggregations返回分析结果
  • buckets 返回结果集

2、在查询结果中进行聚合分析

通过一定条件进行过滤,再把过滤出来的数据进行聚合分析。例子:统计last_name为smith的用户兴趣爱好

GET /megacory/employee/_search
{
    "query":{
        "match":{
            "last_name":"smith"
        }
    },
    "aggs":{
        "all_interests":{
            "terms":{
                "field":"interests"
            }
        }
    }
}   

3、聚合分级汇总

基于聚合统计数据再进行统计汇总。例子:根据interests field进行汇总,并统计汇总中所有人的平均年龄。

GET /megacory/emloyee/_search
{
    "aggs":{
        "all_interests":{
            "terms":{"field":"interests"},
            "aggs":{
                "avg_age":{
                    "avg":{"field":"age"}
                }
            }
        }
    }
}
  • avg 求指定field的平均值
  • 注意aggs层级关系

你可能感兴趣的:(Elasticsearch基础语法记录)