Elasticsearch基础及入门

Elasticsearch基础及入门,第1张

Elasticsearch基础及入门

Elasticsearch基础
  • Elasticesearch基础及介绍

Elasticesearch基础及介绍
  • Elasticesearch 介绍

Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST风格API 、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是一套适用于数据采集、扩充、存储、分析和可视化的免费开源工具。人们通常将 Elastic Stack 称为 ELK Stack,简称ELK(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。

  • Elasticesearch 官网
  • Elasticesearch 官网下载压缩包解压(本机演示Windows环境)
    解压后的目录结构。
    Windows下双击bin目录下的elasticsearch.bat文件


    9300端口是elasticsearch内部的通信端口。9200是对外访问的端口。如果访问9200端口出现以下内容,说明启动成功(注:jdk版本推荐使用JDK1.8
  • Result风格
    resultful风格是一种软件架构风格,而不是标准,只是提供了一种设计原则和约束条件。主要适用于客户端和服务器端交互的软件。是基于http协议实现。目的是为了提高系统的可伸缩性,降低应用之间的耦合度,方便框架分布式处理程序。基于这个风格的软件可更加的简单、更有层次,更易于实现缓存的机制。对于GET、PUT、DELETe请求多是具有幂等性,POST请求则不具备幂等性,POST请求可能会导致资源的更改。
  • JSON格式
    JSON全程是Javascript Object Notation是一种轻量级的数据交换格式。JSON字符串一般是指JSON格式的字符串Elasticsearch的响应格式就是JSON格式的。
  • 数据格式
    Elasticsearch是一个面向文档的一个数据库。为了方便理解,将Elasticsearch的存储文档数据与关系型数据库MySQL存储数据的概念进行一个类比

    在官方的文档解释中

第一个业务需求是存储员工数据。 这将会以 员工文档 的形式存储:一个文档代表一个员工。存储数据到 Elasticsearch 的行为叫做 索引 ,但在索引一个文档之前,需要确定将文档存储在哪里。一个 Elasticsearch 集群可以 包含多个 索引 ,相应的每个索引可以包含多个 类型 。 这些不同的类型存储着多个 文档 ,每个文档又有 多个 属性 。

Index Versus Index Versus Index
你也许已经注意到 索引 这个词在 Elasticsearch 语境中有多种含义, 这里有必要做一些说明:
索引(名词):
如前所述,一个 索引 类似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或 indexes 。
索引(动词):
索引一个文档 就是存储一个文档到一个 索引 (名词)中以便被检索和查询。这非常类似于 SQL 语句中的 INSERT 关键词,除了文档已存在时,新文档会替换旧文档情况之外。
倒排索引:
关系型数据库通过增加一个 索引 比如一个 B树(B-tree)索引 到指定的列上,以便提升数据检索速度。Elasticsearch 和 Lucene 使用了一个叫做 倒排索引 的结构来达到相同的目的。

  • 默认的,一个文档中的每一个属性都是 被索引 的(有一个倒排索引)和可搜索的。一个没有倒排索引的属性是不能被搜索到的。我们将在 倒排索引 讨论倒排索引的更多细节。
  • 倒排索引
    详情见官方文档

  • 创建索引(不能使用POST请求)

    使用POST请求会出现以下信息

  • 查看所以信息
    localhost:9200/_cat/indices

  • 删除索引 DELETE localhost:9200/索引名称

  • 创建文档POST(PUT)请求(关键字:doc)localhost:9200/shopping/doc/文档名称

  • 局部更新文档POST或者PUT请求

  • 全量更新文档POST请求 _update

  • 删除文档DELETE请求

  • 查询文档GET请求

  • 查询某个文档的信息doc/文档名称

  • 查询某个索引下的所有文档信息索引名称/_search

  • 条件查询-分页查询,排序查询

  • 查询所有
    POST请求
    query、match_all

{
“query”:{
“match_all”:{
}
}
}

  • 分页查询
    POST请求
    query、match_all、from、size

    分页的公式:(页码-1)*每页的数量

{
“query”: {
“match_all”: {
}
},
“from”: 0,
“size”: 1
}

  • 条件查询
    POST请求
    q、category、关键字

  • 条件查询
    POST请求
    query、category、关键字

{
“query”: {
“match”: {
“category”: “华为”
}
}
}

  • 返回指定的字段
    POST请求
    query、match_all、from、size、_source、关键字

{
“query”: {
“match_all”: {
}
},
“from”: 0,
“size”: 1,
“_source”: [
“title”
]
}

  • 排序查询
    POST请求
    query、match_all、from、size、_source、sort、关键字

{
“query”: {
“match_all”: {
}
},
“from”: 0,
“size”: 2,
“_source”: [
],
“sort”: {
“price”: {
“order”: “desc”
}
}
}

  • 多条件查询
    推荐使用POST请求关键字:query,bool,must(注:must可以理解成MySQL中的and

{
“query”: {
“bool”: {
“must”: [
{
“match”: {
“category”: “华为”
}
},
{
“match”: {
“price”: 9999
}
}
]
}
}
}

  • 多条件查询
    推荐使用POST请求关键字:query,bool,should(注:should可以理解成MySQL中的or

{
“query”: {
“bool”: {
“should”: [
{
“match”: {
“category”: “华为”
}
},
{
“match”: {
“category”: “小米”
}
}
]
}
}
}

  • 条件查询-范围查询
    推荐使用POST请求关键字:query,bool,should;
    gt: > 大于(greater than)
    lt: < 小于(less than)
    gte: >= 大于或等于(greater than or equal to)
    lte: <= 小于或等于(less than or equal to)

{
“query”: {
“bool”: {
“should”: [
{
“match”: {
“category”: “华为”
}
},
{
“match”: {
“category”: “小米”
}
}
],
“filter”: {
“range”: {
“price”: {
“gt”: 6000
}
}
}
}
}
}

可查询官方文档

  • 条件查询-完全匹配-分析器
    推荐使用POST请求

{
“query”:{
“match_phrase”:{
“category”:“小华”
}
}
}



  • 高亮查询可参考官网的语法
    推荐使用POST请求

{
“query”:{
“match_phrase”:{
“category”:“小”
}
},
“highlight”:{
“fields”:{
“category”:{}
}
}
}

  • 聚合查询 官方文档
    推荐使用POST请求

{
“aggs”:{//聚合 *** 作
“price_group”:{//随便起的名称
“terms”:{//分组
“field”:“price”
}
}
}
}

  • 聚合函数

{
“aggs”: {//聚合 *** 作
“price_avg”: {//随便起的名称
“avg”: {//平均值
“field”: “price” //分组的字段
}
}
},
“size”:0
}

  • 映射关系官方文档

{
“properties”: {
“name”: {
“type”: “text”,
“index”: true
},
“sex”: {
“type”: “keyword”,
“index”: true
},
“tel”: {
“type”: “keyword”,
“index”: false
}
}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5681228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存