通过 RESTful API 和 Elasticsearch 交互

调试工具

Postman

RESTful API

有关 RESTful API的介绍 请查阅

http://www.runoob.com/w3cnote/restful-architecture.html


RESTful API 在 Elasticsearch 中的应用

动作 解释
PUT 更新或者新增文档
GET 检索文档
DELETE 删除文档
HEAD 校验是否存在该文档 (校验状态码: 200 存在,404不存在)

Elasticsearch 与 关系型数据库的对应关系

Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields


元数据(Metadata)

身份元数据(Identity meta-fields)

身份元数据顾名思义就是能够唯一标识Document的,Elasticsearch中主要有四个身份元数据

  1、_index:文档所属的index,这个index相当于关系型数据库中的数据库概念,它是存储和索引关联数据的地方;

  2、_uid:其由_type和_id组成;

  3、_type:文档所属的mapping type,相当于关系型数据库中的表的概念;

  4、_id:文档的id,这个可以由Elasticsearch自动生成,也可以在写入Document的时候由程序指定。它与_index和_type组合时,就可以在Elasticsearch中唯一标识一个文档。

文档源元数据(Document source meta-fields)

文档源元数据主要有两个:

1、_source:
这个字段标识文档的主体信息,也就是我们写入在中的数据;

2、_size:
这个字段存储着_source字段中信息的大小,单位是byte;不过这需要我们安装mapper-size插件。

索引元数据(Indexing meta-fields)
1、_all:
这个字段索引了所有其他字段的值;

2、_field_names:
存储着文档中所有值为非空的字段信息,这在快速查找/过滤值存在或者值为空的情况下非常有用;
  
3、_timestamp:
存储着当前文档的时间戳信息,可以由程序指定,也可以由ElasticSearch自动生成,其值会影响文档的删除(如果启用了TTL机制);

4、_ttl:
标识着当前文档存储的时长,超过了这个时长文档将会被标识为delete,之后会被ElasticSearch删除。

路由元数据(Routing meta-fields)
1、_parent:用于创建两个映射的父子之间的关系;

2、_routing:自定义路由值,可以路由某个文档到具体的分片(shard)。


其他元数据
_meta:特定于应用程序的元数据。

检索单个文档

地址: GET /megacorp/employee/1

GET请求
UR组成: index(库名) / type(表名) / ID

请求结果

{
    "_index": "megacorp",   // 库名
    "_type": "employee",    // 表名
    "_id": "1",             // id
    "_version": 8,          // 版本号
    "found": true,          // 是否找到该文档
    "_source": {            // 存储的原始文档数据
        "first_name": "John",
        "last_name": "Smith",
        "age": 25,
        "about": "I love to go rock climbing",
        "interests": [
            "sports",
            "music"
        ]
    }
}

轻量搜索

关键词 【_search】
请求地址: GET /megacorp/employee/_search

请求数据:

{
    "took": 2,
    "timed_out": false,

    // 分片信息 ? 具体位未知 ~~~
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },

    // 数据
    "hits": {
        // 总条数
        "total": 3,

        // 排名最高的分数值 
        "max_score": 1,

        // 数据值
        "hits": [
            {   
                // 库名
                "_index": "megacorp",
                
                // 表名
                "_type": "employee",

                // ID 
                "_id": "2",

                // 排名分数
                "_score": 1,

                // 文档数据
                "_source": {
                    "first_name": "Jane",
                    "last_name": "Smith",
                    "age": 32,
                    "about": "I like to collect rock albums",
                    "interests": [
                        "music"
                    ]
                }
            },
            {
                "_index": "megacorp",
                "_type": "employee",
                "_id": "1",
                "_score": 1,
                "_source": {
                    "first_name": "John",
                    "last_name": "Smith",
                    "age": 25,
                    "about": "I love to go rock climbing",
                    "interests": [
                        "sports",
                        "music"
                    ]
                }
            },
            {
                "_index": "megacorp",
                "_type": "employee",
                "_id": "3",
                "_score": 1,
                "_source": {
                    "first_name": "Douglas",
                    "last_name": "Fir",
                    "age": 35,
                    "about": "I like to build cabinets",
                    "interests": [
                        "forestry"
                    ]
                }
            }
        ]
    }
}

你可能感兴趣的:(通过 RESTful API 和 Elasticsearch 交互)