Elasticsearch-探索数据

本文介绍Elasticsearch的查询API,包括基于URL和带有请求体的查询方式,涵盖工具使用、REST API详解、查询参数说明及JSON查询语言应用,如匹配所有信息、限定查询数量、分页查询、排序、限定查询属性和条件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


title: Elasticsearch-探索数据
date: 2019-01-18 21:14:40
tags: Elasticsearch
categories: Elasticsearch


Search API

查询的API分为两类,一类是基于URL查询的,一类是带有请求体的查询方式

工具

  • ElasticSearch
  • kibana(可选)/谷歌插件ElasticSearch Head/PostMan

基于URL查询

Rest API 通过访问_search节点访问得到

GET /item/_search?q=*&sort=cId:asc

这个查询中item指定index,q=*代表匹配所有的index,sort=cId:asc表示根据cId按照asc由小到大的顺序呢进行排序

查询结果:

{
    "took": 75,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 35,
        "max_score": null,
        "hits": [
            {
                "_index": "item",
                "_type": "item",
                "_id": "MWTTTTGFR",
                "_score": null,
                "_source": {
                    "itemId": "MWTTTTGFR",
                    "name": "小米笔记本Air 13.3\"",
                    "cId": 6,
                    "itemCatName": null,
                    "sellPoint": "全新升级:第八代四核处理器\n5399元起",
                    "price": 5399,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms.jpg",
                    "remark": null,
                    "description": null,
                    "sortOrder": null
                },
                "sort": [
                    6
                ]
            },
            {
                "_index": "item",
                "_type": "item",
                "_id": "MARADSAi",
                "_score": null,
                "_source": {
                    "itemId": "MARADSAi",
                    "name": "小米笔记本Air 12.5\"  ",
                    "cId": 8,
                    "itemCatName": null,
                    "sellPoint": "在设计小米笔记本时,设计师做了一个大胆的决定:去掉笔记本正面的Logo。这个设计虽然冒险,却换来了一个优雅的、干净的表面,高度简洁的设计美学使笔记本从一个产品,成为了一件艺术品。什么都没有的正面,会不会没个性?美学家认为这恰恰提供了个性的无限可能:没有 Logo,正意味着它的每个角落都可以被装饰。还有更多艺术家机身贴纸,陆续推出。",
                    "price": 3599,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms.jpg",
                    "remark": null,
                    "description": null,
                    "sortOrder": 4
                },
                "sort": [
                    8
                ]
            },
            {
                "_index": "item",
                "_type": "item",
                "_id": "AGVERFERVE",
                "_score": null,
                "_source": {
                    "itemId": "AGVERFERVE",
                    "name": "小米游戏本",
                    "cId": 8,
                    "itemCatName": null,
                    "sellPoint": "让你在游戏的世界里恣意闯荡,亦可在游戏之外更加专注极致地创作,这是我们的初衷。为此,我们邀请多\n领域的业内专家,从配置、散热,到键盘、屏幕、音效等进行了系统级的重塑,历经两年,终于将这款小米\n游戏本呈现给你。",
                    "price": 6399,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms_1533266333.04566853!200x200.jpg",
                    "remark": null,
                    "description": null,
                    "sortOrder": 5
                },
                "sort": [
                    8
                ]
            },
            {
                "_index": "item",
                "_type": "item",
                "_id": "PDASJSDASCS",
                "_score": null,
                "_source": {
                    "itemId": "PDASJSDASCS",
                    "name": "小米笔记本Air 13.3\"",
                    "cId": 8,
                    "itemCatName": null,
                    "sellPoint": "只需一个 GeForce®️ MX150 独立显卡和 2GB GDDR5 高速显存,让你对\n轻薄本的游戏性能完全改观。43%的性能提升,流畅运行大场景游戏。",
                    "price": 5399,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms.jpg",
                    "remark": null,
                    "description": null,
                    "sortOrder": 5
                },
                "sort": [
                    8
                ]
            },
            {
                "_index": "item",
                "_type": "item",
                "_id": "QEWQEDFDF",
                "_score": null,
                "_source": {
                    "itemId": "QEWQEDFDF",
                    "name": "小米净水器",
                    "cId": 8,
                    "itemCatName": null,
                    "sellPoint": "大流量直出纯净水,健康家庭必备",
                    "price": 1999,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms.jpg",
                    "remark": null,
                    "description": null,
                    "sortOrder": 8
                },
                "sort": [
                    8
                ]
            },
            {
                "_index": "item",
                "_type": "item",
                "_id": "QFCAPAK",
                "_score": null,
                "_source": {
                    "itemId": "QFCAPAK",
                    "name": "小米笔记本 15.6\"",
                    "cId": 8,
                    "itemCatName": null,
                    "sellPoint": "全面均衡的国民轻薄本\n第八代酷睿™ 四核处理器",
                    "price": 4199,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms.jpg",
                    "remark": null,
                    "description": null,
                    "sortOrder": 1
                },
                "sort": [
                    8
                ]
            },
            {
                "_index": "item",
                "_type": "item",
                "_id": "BNRWRVBSFV",
                "_score": null,
                "_source": {
                    "itemId": "BNRWRVBSFV",
                    "name": "小米笔记本Pro 15.6″",
                    "cId": 8,
                    "itemCatName": null,
                    "sellPoint": "最高配备第八代英特尔® 酷睿™ i7处理器 ,无锁4核8线程,最大频率达4.0GHz,性能较上一代提升40%。\n强大而高效的多任务处理能力,让你近乎实时地创建、编辑和共享图形渲染及视频内容。",
                    "price": 6299,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms_1505897592.73836006!200x200.jpg",
                    "remark": null,
                    "description": null,
                    "sortOrder": 2
                },
                "sort": [
                    8
                ]
            },
            {
                "_index": "item",
                "_type": "item",
                "_id": "BRWTGVRF",
                "_score": null,
                "_source": {
                    "itemId": "BRWTGVRF",
                    "name": "小米电视4C 50英寸",
                    "cId": 8,
                    "itemCatName": null,
                    "sellPoint": "4K HDR 人工智能语音电视",
                    "price": 1899,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms.jpg",
                    "remark": "",
                    "description": null,
                    "sortOrder": 2
                },
                "sort": [
                    8
                ]
            },
            {
                "_index": "item",
                "_type": "item",
                "_id": "VAAAEFEFERF",
                "_score": null,
                "_source": {
                    "itemId": "VAAAEFEFERF",
                    "name": "米家空气净化器 Pro",
                    "cId": 8,
                    "itemCatName": null,
                    "sellPoint": "澎湃动力,净化能力更快更强",
                    "price": 1499,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms.jpg",
                    "remark": null,
                    "description": null,
                    "sortOrder": 5
                },
                "sort": [
                    8
                ]
            },
            {
                "_index": "item",
                "_type": "item",
                "_id": "GRJTOGVJRFGOV",
                "_score": null,
                "_source": {
                    "itemId": "GRJTOGVJRFGOV",
                    "name": "小米笔记本Air 13.3\"",
                    "cId": 8,
                    "itemCatName": null,
                    "sellPoint": "全新升级:第八代四核处理器\n",
                    "price": 5399,
                    "limitNum": 80,
                    "image": "http://39.105.59.55:9999/img/pms.jpg",
                    "remark": null,
                    "description": null,
                    "sortOrder": 4
                },
                "sort": [
                    8
                ]
            }
        ]
    }
}

响应中会出现的一些参数

  • took: 查询发费的时间(ms)

  • timeout: 是否超时

  • _shards: 碎片数

  • hits: 查询的结果

json格式的查询语言发出请求

  1. 匹配所有信息match_all

    URL: localhost:9200/item/_search

    请求体:

    {
    	"query":{
    		"match_all":{
    			
    		}
    	}
    }
    
    • 限定查询出数据的数量默认查询出来的结果数量是10

      GET /item/_search
      {
        "query": { "match_all": {} },
        "size": 1
      }
      
    • 分页查询

      GET /item/_search
      {
        "query": { "match_all": {} },
        "from": 10,
        "size": 10
      }
      
    • 按照某一个属性排序

      GET /item/_search
      {
        "query": { "match_all": {} },
        "sort": { "price": { "order": "desc" } }
      }
      
  2. 如果只写match_all默认会把信息的所有属性全都查出来,我们可以通过以下方式限定查询的属性

    GET /item/_search
    {
      "query": { "match_all": {} },
      "_source": ["id", "price"]
    }
    

    这样子,查询结果的字段信息就只会包含idprice,类似于SQL语句里的select id,price from item

  3. 限定查询条件

    1. 匹配某个一字段

      下面这个就是匹配id为20的商品

      GET /item/_search
      {
        "query": { "match": { "id": 20 } }
      }
      
    2. 匹配多个字段,有一个就行

      下面这个匹配商品厂家是mill或者lane

      GET /item/_search
      {
        "query": { "match": { "address": "mill lane" } }
      }
      
    3. 包含mill lane整个短语

      GET /item/_search
      {
        "query": { "match_phrase": { "address": "mill lane" } }
      }
      
    4. bool 查询

      1. 下面这个例子返回的数据必须包含milllane

        GET /item/_search
        {
          "query": {
            "bool": {
              "must": [
                { "match": { "address": "mill" } },
                { "match": { "address": "lane" } }
              ]
            }
          }
        }
        
      2. 下面这个例子返回的数据包含mill或者lane

        GET /item/_search
        {
          "query": {
            "bool": {
              "should": [
                { "match": { "address": "mill" } },
                { "match": { "address": "lane" } }
              ]
            }
          }
        }
        
      3. 下面这个例子返回的数据不能包含id为20的数据

        GET /item/_search
        {
          "query": {
            "bool": {
              "must": [
                { "match": { "age": "40" } }
              ],
              "must_not": [
                { "match": { "id": 20 } }
              ]
            }
          }
        }
        

执行过滤操作

下面这个例子返回的数据包含id在10到20之间的数据

GET /bank/_search
{
  "query": {
    "bool": {
      "must": { "match_all": {} },
      "filter": {
        "range": {
          "id": {
            "gte": 10,
            "lte": 20
          }
        }
      }
    }
  }
}

执行聚类

聚类可以理解为SQL中的GROUP BY,对信息进行分类

下边这个例子根据商品名称进行分类

GET /item/_search
{
  "size": 0,
  "aggs": {
    "group_by_name": {
      "terms": {
        "field": "name.keyword"
      }
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值