zoukankan      html  css  js  c++  java
  • 探索你的数据

    source:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/getting-started-explore-data.html

    简单的数据集:

    现在我们对基本概念有了一些了解,现在尝试处理一些更加真实的数据集,这里准备了一些简单虚拟的银行用户账号信息的json文档,每个文档都是一下的格式:

    {
        "account_number": 0,
        "balance": 16623,
        "firstname": "Bradshaw",
        "lastname": "Mckenzie",
        "age": 29,
        "gender": "F",
        "address": "244 Columbus Place",
        "employer": "Euron",
        "email": "bradshawmckenzie@euron.com",
        "city": "Hobucken",
        "state": "CO"
    }

    数据源来自于 www.json-generator.com

    所以可以忽略数据的真实性,这都是随机生成的。

    加载一些简单的数据集:

    你可以从上面的网站下载一些简单的数据集,加载数据到我们的集群用以下方式:

    curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"
    curl "localhost:9200/_cat/indices?v"

    返回以下结果:

    health status index uuid                   pri rep docs.count docs.deleted store.size pri.store.size
    yellow open   bank  l7sSYV2cQXmu6_4rJWVIww   5   1       1000

    这意味着我们成功的写入了1000条文档到我们的“银行”索引中。

    搜索API

    现在我们开始进行一些简单的搜索,有两种简单的搜索方式:

    一个是通过REST request url发送一些搜索参数,

    另一个是通过REST request body发送。
    request body方法允许你更加实验性,通过可读的json来定义你的搜索模式。

    我们尝试一个简单请求URL(第一种方法),但是在本书其他的部分中,我们用的是request body(第二种方法)

    restAPI搜索通过_search结尾,这个栗子是返回bank索引中的所有文档:

    curl -X GET "localhost:9200/bank/_search?q=*&sort=account_number:asc&pretty&pretty"

    让我首先来分析一下这个搜索语句

    我们通过"_search"结尾来搜索银行索引,

    "q=*"这个参数表示搜索所有的索引中的文档,

    "sort=account_num:asc"这个参数表示对结果中的"account_num"进行升序排序。

    "pretty"这个参数要求es尽可能返回一个json格式的结果。

    结果如下:

    {
      "took" : 63,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 1000,
        "max_score" : null,
        "hits" : [ {
          "_index" : "bank",
          "_type" : "_doc",
          "_id" : "0",
          "sort": [0],
          "_score" : null,
          "_source" : {"account_number":0,"balance":16623,"firstname":"Bradshaw","lastname":"Mckenzie","age":29,"gender":"F","address":"244 Columbus Place","employer":"Euron","email":"bradshawmckenzie@euron.com","city":"Hobucken","state":"CO"}
        }, {
          "_index" : "bank",
          "_type" : "_doc",
          "_id" : "1",
          "sort": [1],
          "_score" : null,
          "_source" : {"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"amberduke@pyrami.com","city":"Brogan","state":"IL"}
        }, ...
        ]
      }
    }

    返回结果中我们可以看到如下内容:

    took:es执行这个搜索需要的时间(毫秒级)

    timed_out:标志这个查询是否超时

    _shards:告诉我们查询过程中用到了多少分片,同时返回查询成功和失败的分片。

    hits:搜索结果

    hits.total:我们搜索到的文档总数量

    hits.hits:结果集(默认返回前十条)

    hits.sort:排序的key(如果没有就用打分结果排序)

    hits._score max_score 目前先忽略

    下面是一个类似的查询:

    curl -X GET "localhost:9200/bank/_search?pretty" -H 'Content-Type: application/json' -d'
    {
    "query": { "match_all": {} },
    "sort": [
    { "account_number": "asc" }
    ]
    }
    '

    这里与上面不同的是没有用参数"q=*",我们提供了json模式的_searchAPI请求体,我们待会儿再讨论这个查询。

    es一次性的完成一个请求,并且不保证任何形式的服务端资源或者是在你的结果中打开游标。这个与其他查询平台比如Sql的明显不同。sql这种你可以开始的时候获取查询结果的一部分,如果想继续获取你还可以返回到服务端,通过某种服务端的游标操作来获取结果的其他部分.

  • 相关阅读:
    (转)三款Json查看小工具
    开源数据源
    关于异常
    java 线程池
    百度android面试及一些问题的讲解
    linux常用命令
    android activityManager
    Android ListView及其属性
    android listView与adapter
    android 反编译
  • 原文地址:https://www.cnblogs.com/supermanwx/p/11926711.html
Copyright © 2011-2022 走看看