Elasticsearch-探索数据


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"
      }
    }
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值