快速入门ElasticSercher

下载Elasticsearch

Elasticserach官网
不用从网盘中找因为我感觉官网的下载速度其实还是可以的
熟悉目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

跨域问题 在elasticserch.yaml配置文件中添加
在这里插入图片描述

打开bin目录下elasticsearch.bat等待运行 运行完毕之后

在这里插入图片描述
这是一个公共地址访问这个地址
在这里插入图片描述
遇到的问题
1:jkd版本可能与当前本版冲突,导致启动失败从而无法访问到这个端口
解决办法:重新下载一个低版本的El因为最可能的原因就是你的jdk版本太低

2:unable to find valid certification path to requested target无法找到被请求目标的有效证书路径其实这个问题不会影响你访问端口但是,实在要想解决这个问题的话
点击这篇博客可以帮你解决问题

安装El的可视化界面 head 插件

下载地址:https://www.elastic.co/cn/downloads/elasticsearch
在head目录下打开命令窗口:执行两部操作
== 前提是你的电脑环境中已经有了node==
1:cnpm install 将 head运行所需要的node模块下载进去
2:启动head npm run start
3同时将el打开

在这里插入图片描述
在这里插入图片描述

Kibana安装

了解ELK

ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。
Logstash是ELK的
中央数据流引擎
,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。
市面上很多开发只要提到ELK能够一致说出它是一个日志分析架构技术栈总称,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性,并非唯一性。
在这里插入图片描述

Kibana

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态.设置Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。
官网:https://www.elastic.co/cn/kibana/
Kibana要和ES版本一致!!!

访问端口号:http://localhost:5601/

在这里插入图片描述
汉化操作

在config 目录下的 kibana.yml文件中将en修改为zh-CN 并重启

在这里插入图片描述

ES的核心概念

ES的核心概念

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

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

物理设计

elasticsearch在后台把每个索引划分成多个分片,每个分片可以在集群中的不同服务器间迁移!
一个人就是一个集群!默认的集群名elasticsearch

逻辑设计

一个索引类型中,包含多个文档,比如说文档1、文档2。当我们索引一篇文档时,可以通过这样的一个顺序找到它:索引>类型>文档ID,通过这个组合我们就能索引到某个具体的文档。ID不必是整数,实际上它是个字符串。

1: 自我包含:一篇文档同时包含字段和对应的值,也就是同时包含 key:value!

2:可以是层次型的:一个文档中包含自文档,复杂的逻辑实体就是这么来的!(就是一个json对象,fastjson进行自动转换)

1:灵活的结构:文档不依赖预先定义的模式,我们知道关系型数据库中,要提前定义字段才能使用,在elasticsearch中,对于字段是非常灵活的,有时候,我们可以忽略该字段,或者动态的添加一个新的字段。
在这里插入图片描述

物理设计:节点和分片如何工作

一个集群至少有一个节点,而一个节点就是一个elasricsearch进程,节点可以有多个索引默认的,如果你创建索引,那么索引将会有个5个分片(primary shard,又称主分片)构成的,每一个主分片会有一个副本(replica shard,又称复制分片)
在这里插入图片描述
上图是一个有3个节点的集群,可以看到主分片和对应的复制分片都不会在同一个节点内,这样有利于某个节点挂掉了,数据也不至于丢失。数据维护实际上,一个分片是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结构使得elasticsearch在不扫描全部文档的情况下,就能告诉你哪些文档包含特定的关键字。不过,等等,倒排索引是什么鬼?
倒排索引:https://www.kuangstudy.com/bbs/1501584046755880962

简单说一下倒排索引

在这里插入图片描述

IK分词器插件

下载:https://github.com/medcl/elasticsearch-analysis-ik
在这里插入图片描述

将文件解压到plugins文件中

在这里插入图片描述
ik_smart 为最少切分
在这里插入图片描述

ik_max_word为最细粒度划分!穷尽词库的可能
在这里插入图片描述

自定义分词器

在这里插入图片描述
在这里插入图片描述
重启
在这里插入图片描述
在这里插入图片描述

Restful风格

一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
在这里插入图片描述

创建一个索引,添加

在这里插入图片描述

再刚开始的使用阶段我们发现索引就好比数据库中的数据库

在这里插入图片描述在这里插入图片描述

指定字段的类型(使用PUT)

PUT /test2
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "age":{
        "type": "long"
      },
      "birthday":{
        "type": "date"
      }
    }
  }
}

kibana的提示功能十分强大我感觉

获取默认信息

_doc 默认类型(default type),type 在未来的版本中会逐渐弃用,因此产生一个默认类型进行代替

在写文档字段的时候如果没有指定相应的字段,那么el会自动给你匹配一个相应的类型,但是不一定完全是对应类型

展:通过get _cat/ 可以获取ElasticSearch的当前的很多信息!

GET _cat/indices
GET _cat/aliases
GET _cat/allocation
GET _cat/count
GET _cat/fielddata
GET _cat/health
GET _cat/indices
GET _cat/master
GET _cat/nodeattrs
GET _cat/nodes
GET _cat/pending_tasks
GET _cat/plugins
GET _cat/recovery
GET _cat/repositories
GET _cat/segments
GET _cat/shards
GET _cat/snapshots
GET _cat/tasks
GET _cat/templates
GET _cat/thread_pool

检索全部信息

GET _search
{
  "query": {
    "match_all": {}
  }
}

修改操作方法一:(不推荐使用)

直接使用put覆盖原来的值但是如果漏掉某个字段没有写,那么更新是没有写的字段 ,会消失所以我们不建议使用该方法
在这里插入图片描述

PUT /test3/_doc/1
{
  "name" : "家森很帅"
}

在这里插入图片描述
但是我们如果声明一下这是一个update操作那么数据就不会丢失了update操作的基本格式如下:

POST /索引/_doc/id/_update{
  "doc":{
       "字段":"修改之后的数据"
   }
}

post的修改操作不会将产生版本号的叠升

删除索引操作

DELETE 索引名

花样的查询操作

简单查询

GET /索引/_doc/_search?q=字段:字段值

这种简单查询的查询结果是一种模糊查询结果

复杂查询
在这里插入图片描述

GET /test3/_doc/_search
{
  "query":{
    "match":{
      "name":"家森"
    }
  },
 "_source":["name","desc"],
  "sort":[
    {
      "age":{
        "order":"asc"
      }
     }
    ],
    "from":0,
    "size":2
}

多条件查询

1. must 相当于 and
2. should 相当于 or
3. must_not 相当于 not (… and …)
4. filter 过滤

在这里插入图片描述

GET /test3/_doc/_search
{
  "query":{
    "bool":{
      "must":[
        {
          "match":{
            "age":20
          }
        },
        {
          "match":{
            "birth":"2001-10-7"
          }
        }
        ],
        "filter":{
          "range":{
            "age":{
              "gte":19,
              "lte":21
            }
          }
        }
    }
  },
  "_source":[
    "name",
    "age"
  ]
}

匹配数组

GET /test3/_doc/_search
{
  "query":{
     "match":{
       "name":"帅 家 森"
     }
  }
}

在这里插入图片描述

精确查询

term 直接通过 倒排索引 指定词条查询
适合查询 number、date、keyword ,不适合text

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PUT /test
{
  "mappings": {
    "properties": {
      "text":{
        "type":"text"
      },
      "keyword":{
        "type":"keyword"
      }
    }
  }
}
GET /test/_doc/_search
{
  "query":{
   "match":{
      "keyword":"测试"
   }
  }
}

在这里插入图片描述
查询结果为空说明其(keyword)不支持分词效果

     "text":"测试"

在这里插入图片描述
text支持分词效果

关键字高亮显示

在这里插入图片描述
在我们进行百度搜索的时候我们发现只要搜索结果中包含着关键字在搜索的返回内容中就会以高亮的形式显示
在这里插入图片描述
在这里插入图片描述

GET test3/_doc/_search
{
  "query":{
    "match":{
      "name":"家森"
    }
  },
  "highlight": {
    "pre_tags": "<p class='key' style='color:red'>",
    "post_tags": "</p>", 
    "fields": {
      "name": {}
    }
  }
}

江湖路远我们下期再见。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值