快速入门ElasticSercher

编程入门 行业动态 更新时间:2024-10-15 22:25:45

快速<a href=https://www.elefans.com/category/jswz/34/1770026.html style=入门ElasticSercher"/>

快速入门ElasticSercher

下载Elasticsearch

Elasticserach官网
不用从网盘中找因为我感觉官网的下载速度其实还是可以的
熟悉目录


跨域问题 在elasticserch.yaml配置文件中添加

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


这是一个公共地址访问这个地址

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

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

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

下载地址:
在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索引监测。
官网:/
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在不扫描全部文档的情况下,就能告诉你哪些文档包含特定的关键字。不过,等等,倒排索引是什么鬼?
倒排索引:

简单说一下倒排索引

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": {}}}
}

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

更多推荐

快速入门ElasticSercher

本文发布于:2024-02-11 19:58:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1683093.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:入门   快速   ElasticSercher

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!