热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

功能强大|多种_ElasticSearch

篇首语:本文由编程笔记#小编为大家整理,主要介绍了ElasticSearch相关的知识,希望对你有一定的参考价值。Elast

篇首语:本文由编程笔记#小编为大家整理,主要介绍了ElasticSearch相关的知识,希望对你有一定的参考价值。




Elasticsearch 概述


ELK Stack技术栈, 包括 Elasticsearch、Kibana(展示数据)、Beats(轻量级采集传输数据) 和 Logstash(采集传输数据)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。



Elasticsearch 入门




ELK官网




Elasticsearch全文搜索引擎windows服务端直接下载解压后,进入 bin 文件目录,点击 elasticsearch.bat 文件启动 ES 服务端



目录含义
bin可执行脚本目录
config配置目录
jdk内置 JDK 目录
lib类库
logs日志目录
modules模块目录
plugins插件目录


启动后如下所示:

注意:9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的 http 协议 RESTful 端口。




打开浏览器(推荐使用谷歌浏览器),输入地址:http://localhost:9200,测试结果。




客户端Postman安装


如果直接通过浏览器向 Elasticsearch 服务器发请求,那么需要在发送的请求中包含HTTP 标准的方法,而 HTTP 的大部分特性且仅支持 GET 和 POST 方法。所以为了能方便地进行客户端的访问,可以使用 Postman 软件。
Postman 是一款强大的网页调试工具,提供功能强大的 Web API 和 HTTP 请求调试。软件功能强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman 中文版能够发送任何类型的 HTTP 请求 (GET, HEAD, POST, PUT…),不仅能够表单提交,且可以附带任意类型请求体。



Postman 官网




数据格式


Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将 Elasticsearch 里存储文档数据和关系型数据库 mysql 存储数据的概念进行一个类比。



索引相关操作




HTTP 创建索引




对比关系型数据库,创建索引就等同于创建数据库。在 Postman 中,向 ES 服务器发 PUT(创建) 请求 :http://127.0.0.1:9200/shopping




PS:幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。




HTTP 查询索引




查询索引,向 ES 服务器发起GET请求




获取索引的详细信息


http://127.0.0.1:9200/_cat/indices?v




HTTP 删除索引




删除索引,向 ES 服务器发起DELETE请求




文档相关操作




索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式。




HTTP 创建文档




创建文档,在 Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_doc



"title":"小米手机",
"category":"小米",
"images":"http://www.lala.com/xm.jpg",
"price":3900








HTTP 查询文档




查询文档,在 Postman 中,向 ES 服务器发 GET 请求




HTTP 修改文档




全量修改文档,在 Postman 中,向 ES 服务器发 PUT 请求



"title":"小米手机",
"category":"小米",
"images":"http://www.lala.com/xm.jpg",
"price":1000






局部修改文档,在 Postman 中,向 ES 服务器发 POST 请求,url地址需要将 _doc 修改成 _update


http://127.0.0.1:9200/shopping/_update/1002


"_doc":
"title":"华为"







HTTP 删除文档




删除文档,在 Postman 中,向 ES 服务器发 DELETE 请求




HTTP 查询的多种方法




url地址,条件查询


http://127.0.0.1:9200/shopping/_search?q=category:小米





请求体,条件查询



"query":
"match":
"category":"小米"








分页查询


from表示当前页数据的起始位置,第一页第一条数据的起始位置为0
size表示每页查询数据的条数


"query":
"match_all":

,
"from":0, // from表示当前页数据的起始位置,第一页第一条数据的起始位置为0
"size":3 // size表示每页查询数据的条数




起始位置计算公式




from : (页码-1) * 每页数据条数


例如:查询第二页的两条数据记录
from: (2-1)*2=2
size:2






分页查询并指定字段查询,只显示指定的字段



"query":
"match_all":

,
"from":2, // from表示当前页数据的起始位置,第一页第一条数据的起始位置为0
"size":2, // size表示每页查询数据的条数
"_source":["title"] // 指定字段查询,只显示指定的字段






分页查询并指定字段,对查询结果进行排序



"query":
"match_all":

,
"from":0, // from表示当前页数据的起始位置,第一页第一条数据的起始位置为0
"size":3, // size表示每页查询数据的条数
"_source":["title"], // 指定字段查询
"sort":
"price":
"order":"desc" // 排序








多条件查询,指定多个条件进行查询






"query":
"bool":
"must":[ // must条件同时成立

"match":
"category":"小米"

,

"match":
"price":1000


]







"query":
"bool":
"should":[ // should任意一个条件成立即可

"match":
"_id":1002

,

"match":
"price":1000


]







"query":
"bool":
"should":[ // should任意一个条件成立即可

"match":
"_id":1002

,

"match":
"category":"小米"


],
"filter": // 范围查询
"range":
"price":
"gt":2000 // 价格大于2000











HTTP 全文检索匹配规则




match模式,分词进行全文检索



"query":
"match": // match默认是分词进行全文检索
"category":"小华"








match_phrase模式,完全匹配进行全文检索



"query":
"match_phrase": // match_phrase 默认是不分词,完全匹配
"category":"小华"









高亮显示



"query":
"match_phrase":
"category":"小米"

,
"highlight": // 高亮显示
"fields":
"category":








HTTP 聚合查询



"aggs": //聚合操作
"price_group": //名称,随意起名
"terms": //分组
"field":"price" //分组字段


,
"size":0 //不要原始数据





"aggs": //聚合操作
"price_avg": //名称,随意起名
"avg": //平均值
"field":"price" //分组字段


,
"size":0 //不要原始数据






HTTP 映射关系






"properties":
"name":
"type":"text", //text文本可以分词查询
"index":true //index支持索引查询
,
"sex":
"type":"keyword", //keyword不能分词,必须完整匹配
"index":true //index支持索引查询
,
"tel":
"type":"keyword", //keyword不能分词,必须完整匹配
"index":false //index不支持索引查询












推荐阅读
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了使用postman操作ElasticSearch的步骤,包括下载安装postman、发送http请求给ElasticSearch、添加索引等操作。详细介绍了postman的安装和配置,以及如何使用postman发送http请求给ElasticSearch,并添加索引。通过本文的指导,读者可以快速上手使用postman操作ElasticSearch。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
author-avatar
awetyjdgtjkt_933
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有