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进行高亮显示设置。当设置了高亮属性后,查询结果会给关键字加上<em></em>标签

八、聚合分析

聚合分析通过关键字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层级关系
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值