Elasticsearch的文档、索引和rest api

基本概念

文档(document)

  • elasticsearch 是面向文档的,文档是全部可搜索数据的最小单位html

    例如:数据库

    • 日志文件中的日志项
    • 一部电影中的具体信息
    • 一首歌/一个PDF文档的具体内容
  • 文档会被序列化为JSON格式,保存在Elasticsearch中json

    • JSON对象由字段组成
    • 每一个字段都有相应的字段类型(字符串/数值/布尔/日期/二机制/范围类型)
  • 每一个文档都有一个Unique IDapi

    • 能够本身指定ID
    • 或者经过Elasticsearch自动生成

JSON文档

  • 一篇文档包含了一系列的字段,相似于数据库中的一条记录
  • JSON 文档,格式灵活,不须要预先定义格式
    • 字段的类型能够指定或者经过Elasticsearch自动推算
    • 支持数据/支持嵌套
movieId,title,genres
1,Toy Story(1995),AdvenTure|Animation|Children|Comedy|Fantasy
复制代码
  • csv file经过es转为json
{
    "year" : 1995,
    "@version" : 1,
    "genres" : [
        "AdvenTure","Animation",
        "Children","Comedy","Fantasy"
    ],
    "id" : "1",
    "title" : "Tony Story"
}

复制代码

文档的元数据

{
    "_index" : "movies""_type" : "_doc""_id" : "1""_score" : "14.626""_source" : {
    	"year" : 1995,
    	"@version" : 1,
    	"genres" : [
        	"AdvenTure","Animation",
        	"Children","Comedy","Fantasy"
    	],
    	"id" : "1",
    	"title" : "Tony Story"
	}
}
复制代码
  • 元数据,用于标注文档的相关信息
    • _index : 文档所属的索引名
    • _type : 文档所属的类型名
    • _id : 文档惟一ID
    • _source : 文档的原始Json数据
    • _all : 整合全部字段到该字段(已被废除)
    • _version : 文档的版本信息
    • _score : 相关性打分

索引

{
    "movies" : {
        "settings" : {
            "index" : {
                "create_date" : "15526261177",
                "number_of_shards" : "2",
                "number_of_replicas" : "0",
                "uuid" : "",
                "verison" : {
                    "created" : "302302"
                },
                "provided_name" : "movies"
            }
        }
    }
}
复制代码
  • Index-索引是文档的容器,是一类文档的结合
    • Index 体现了逻辑空间的概念:每一个索引都有本身的Mapping定义,用于定义包含的文档的字段名和字段类型
    • Shard提现了物理空间的概念:索引中的数据分散在shard上
  • 索引的mapping 和Settings
    • Mapping 定义文档字段的类型
    • Setting 定义不一样的数据分布

索引的不一样语意

索引

  • 一个Elasticsearch 集群中,能够建立不少个不一样的索引
  • 保存一个文档到Elasticsearch的过程也叫索引(indexing)
    • es中,建立一个倒排索引的过程
  • 一个B树索引,一个倒排索引

课程Demo

Index 相关 APIbash

#查看索引相关信息
GET kibana_sample_data_ecommerce

#查看索引的文档总数
GET kibana_sample_data_ecommerce/_count

#查看前10条文档,了解文档格式
POST kibana_sample_data_ecommerce/_search
{
}

#_cat indices API
#查看indices
GET /_cat/indices/kibana*?v&s=index

#查看状态为绿的索引
GET /_cat/indices?v&health=green

#按照文档个数排序
GET /_cat/indices?v&s=docs.count:desc

#查看具体的字段
GET /_cat/indices/kibana*?pri&v&h=health,index,pri,rep,docs.count,mt

#How much memory is used per index?
GET /_cat/indices?v&h=i,tm&s=tm:desc

复制代码

Type

  • 7.0以前,一个index能够设置多个types
  • 7.0以后,一个索引只能建立一个Type-"_doc"

抽象和类比

RDBMS Elasticsearch
Table Index(Type)
Row Document
Column Field
Schema Mapping
SQL DSL

传统关系型数据库和Elasticsearch的区别app

  • Elasticsearch - Schemaless /相关性/高性能全文检索
  • RDMS - 事务性/Join

Rest API-被各类语言调用

一些基本的APIless

  • Indices
    • 建立Index
      • PUT movies
    • 查看全部Index
      • _cat/indices

部分操做

在kibana的 开发工具 中运行elasticsearch

// 查看索引相关信息
GET kibana_sample_data_ecommerce

// 查看索引的文档总数
GET kibana_sample_data_ecommerce/_count

// 查看前10条文档,了解文档格式
POST kibana_sample_data_ecommerce/_search
{
  
}

//_cat indeices API
// 查看indices
GET /_cat/indices/kibana*?v&s=index

// 查看状态为绿的索引
GET /_cat/indices?v&health=green

// 查看文档个数排序
GET /_cat/indices?v&s=docs.count:desc

// 查看具体的字段
GET /_cat/indices/kibana*?pri&h=health,index,pri,rep,docs.count,mt

// 每一个索引所占的内存空间
GET /_cat/indices?v&h=i,tm&s=tm:desc

复制代码

相关阅读

相关文章
相关标签/搜索