ElasticSearch从入门到精通(持续更新....)—基础篇

436 阅读2分钟

{人生没有白走的路,每一步都算数。}

在前面的学习中,我们已经掌握了es是什么,同时也把es的服务已经安装启动了,使用es存储数据,获取数据。那么我们来聊聊Elasticsearch的相关概念,数据结构,如何实现搜索。

ES 核心概念

1.索引

2.字段类型(mapping)

3.文档(documents)

elasticsearch 是面向文档,关系型数据库 和 elasticsearch 客观的对比!

Relational DBElasticsearch
数据库(database)索引(indices)
表(tables)types
行(rows)documents
字段(columns)fields

elasticsearch(集群)中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型下又包含多个文档(行),每个文档中又包含多个字段(列)。

elasticsearch 在后台把每个索引划分成多个分片,每分分片可以在集群中的不同服务器间迁移

一个人就是一个集群!默认的集群名字就是 elasticsearch

基于Rest命令说明:

methodurl地址描述
PUTlocalhost:9200/索引名称/类型名称/文档id创建文档(指定文档id)
POSTlocalhost:9200/索引名称/类型名称创建文档(随机文档id)
POSTlocalhost:9200/索引名称/类型名称/文档id/_update修改文档
DELETElocalhost:9200/索引名称/类型名称/文档id删除文档
GETlocalhost:9200/索引名称/类型名称/文档id查询文档通过文档id
POSTlocalhost:9200/索引名称/类型名称/_search查询所有数据
GETlocalhost:9200/索引名称/类型名称/_count统计数量
POSTlocalhost:9200/索引名称/类型名称/_update_by_query查询更新

ES 数据类型

  • 字符串类型

    text、keyword

  • 数值类型

    long、integer、short、byte、double、float、half_float、scaled_float

  • 日期类型

    date

  • 布尔值类型

    boolean

  • 二进制类型

    binary

  • 等等……

创建一个索引:

put /索引名/~类型名~/文档id
{请求体}

添加数据:

POST /wangcp/user/4
{
  "name":"李四4",
  "age":30,
  "desc":"emm,不知道如何形容",
  "tags":["靓女","旅游","唱歌"]
}

版本变迁

type 的版本迭代:

5.x 及以前版本,一个 index 有一个或者多个 type 6.x 版本,一个 index 只有一个 type 7.x 版本移除了 type,type 相关的所有内容全部变成 Deprecated,为了兼容升级和过渡,所有的 7.x 版本 es 数据写入后 type 字段都默认被置为 “_doc” 8.x 版本完全废弃 type

Java连接ElasticSearch:

7.X 版本的改变

TransportClient 在es7后不支持了,要用 java high level rest client,采用9200端口

6.X 以下的版本

elasticsearch 官网推荐是使用基于http协议的restClient去充当客户端连接ES, 如果想基于TCP协议,9300端口从传输层获取es文档数据也是可以的;但es7以上版本不支持

7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它。