分享好友 最新动态首页 最新动态分类 切换频道
谷粒商城—分布式高级①.md
2024-12-27 13:09

1、安装elastic search

dokcer中安装elastic search

谷粒商城—分布式高级①.md

(1)下载ealastic search和kibana

 

(2)配置

 

(3)启动Elastic search

 

设置开机启动elasticsearch

 

(4)启动kibana:

 

设置开机启动kibana

 

(5)测试

查看elasticsearch版本信息: http://#:9200/

 

显示elasticsearch 节点信息http://#:9200/_cat/nodes ,

 

访问Kibana: http://#:5601/app/kibana

2、初步检索

1)_CAT

(1)GET/cat/nodes:查看所有节点

如:http://#:9200/_cat/nodes :

 

注:*表示集群中的主节点

(2)GET/cat/health:查看es健康状况

如: http://#:9200/_cat/health

 

注:green表示健康值正常

(3)GET/cat/master:查看主节点

如: http://#:9200/_cat/master

 

(4)GET/_cat/indicies:查看所有索引 ,等价于mysql数据库的show databases;

如: http://#:9200/_cat/indices

 
2)索引一个文档

保存一个数据,保存在哪个索引的哪个类型下,指定用那个唯一标识
PUT customer/external/1;在customer索引下的external类型下保存1号数据为

 
 

PUT和POST都可以
POST新增。如果不指定id,会自动生成id。指定id就会修改这个数据,并新增版本号;
PUT可以新增也可以修改。PUT必须指定id;由于PUT需要指定id,我们一般用来做修改操作,不指定id会报错。

创建数据成功后,显示201 created表示插入记录成功。

 

这些返回的JSON串的含义;这些带有下划线开头的,称为元数据,反映了当前的基本信息。

“_index”: “customer” 表明该数据在哪个数据库下;

“_type”: “external” 表明该数据在哪个类型下;

“_id”: “1” 表明被保存数据的id;

“_version”: 1, 被保存数据的版本

“result”: “created” 这里是创建了一条数据,如果重新put一条数据,则该状态会变为updated,并且版本号也会发生变化。

下面选用POST方式:

http://#:9200/customer/external/1

 

通过“if_seq_no=1&if_primary_term=1 ”,当序列号匹配的时候,才进行修改,否则不修改。

实例:将id=1的数据更新为name=1,然后再次更新为name=2,起始_seq_no=6,_primary_term=1

(1)将name更新为1

(3)查询新的数据

http://#:9200/customer/external/1

能够看到_seq_no变为7。

(4)再次更新,更新成功

(1)POST更新文档,带有_update

http://#:9200/customer/external/1/_update

如果再次执行更新,则不执行任何操作,序列号也不发生变化

POST更新方式,会对比原来的数据,和原来的相同,则不执行任何操作(version和_seq_no)都不变。

(2)POST更新文档,不带_update

在更新过程中,重复执行更新操作,数据也能够更新成功,不会和原来的数据进行对比。

5)删除文档或索引
 

注:elasticsearch并没有提供删除类型的操作,只提供了删除索引和文档的操作。

删除前,所有的索引

 

删除“ customer ”索引

删除后,所有的索引

 
6)eleasticsearch的批量操作——bulk

语法格式:

 

这里的批量操作,当发生某一条执行发生失败时,其他的数据仍然能够接着执行,也就是说彼此之间是独立的。

bulk api以此按顺序执行所有的action(动作)。如果一个单个的动作因任何原因失败,它将继续处理它后面剩余的动作。当bulk api返回时,它将提供每个动作的状态(与发送的顺序相同),所以您可以检查是否一个指定的动作是否失败了。

实例1: 执行多条数据

 

执行结果

 

实例2:对于整个索引执行批量操作

 

运行结果:

 
7)样本测试数据

准备了一份顾客银行账户信息的虚构的JSON文档样本。每个文档都有下列的schema(模式)。

 

https://github.com/elastic/elasticsearch/blob/master/docs/src/test/resources/accounts.json ,导入测试数据,

POST bank/account/_bulk

3、检索

1)search Api

ES支持两种基本方式检索;

  • 通过REST request uri 发送搜索参数 (uri +检索参数);
  • 通过REST request body 来发送它们(uri+请求体);

信息检索

uri+请求体进行检索

 

HTTP客户端工具(),get请求不能够携带请求体,

 

返回结果:

 

(1)只有6条数据,这是因为存在分页查询;

使用和可以指定查询

 

(2)详细的字段信息,参照: https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-search.html

The response also provides the following information about the search request:

  • – how long it took Elasticsearch to run the query, in milliseconds
  • – whether or not the search request timed out
  • – how many shards were searched and a breakdown of how many shards succeeded, failed, or were skipped.
  • – the score of the most relevant document found
  • - how many matching documents were found
  • - the document’s sort position (when not sorting by relevance score)
  • - the document’s relevance score (not applicable when using )
2)Query DSL
(1)基本语法格式

Elasticsearch提供了一个可以执行查询的Json风格的DSL。这个被称为Query DSL,该查询语言非常全面。

一个查询语句的典型结构

 

如果针对于某个字段,那么它的结构如下:

 
 

query定义如何查询;

  • match_all查询类型【代表查询所有的所有】,es中可以在query中组合非常多的查询类型完成复杂查询;
  • 除了query参数之外,我们可也传递其他的参数以改变查询结果,如sort,size;
  • from+size限定,完成分页功能;
  • sort排序,多字段排序,会在前序字段相等时后续字段内部排序,否则以前序为准;
(2)返回部分字段
 

查询结果:

 
(3)match匹配查询
  • 基本类型(非字符串),精确控制
 

match返回account_number=20的数据。

查询结果:

 
  • 字符串,全文检索
 

全文检索,最终会按照评分进行排序,会对检索条件进行分词匹配。

查询结果:

 
(4) match_phrase [短句匹配]

将需要匹配的值当成一整个单词(不分词)进行检索

 

查处address中包含mill_road的所有记录,并给出相关性得分

查看结果:

 

match_phrase和Match的区别,观察如下实例:

 

查询结果:

 

使用match的keyword

 

查询结果,一条也未匹配到

 

修改匹配条件为“990 Mill Road”

 

查询出一条数据

 

文本字段的匹配,使用keyword,匹配的条件就是要显示字段的全部值,要进行精确匹配的。

match_phrase是做短语匹配,只要文本中包含匹配条件,就能匹配到。

(5)multi_math【多字段匹配】
 

state或者address中包含mill,并且在查询过程中,会对于查询条件进行分词。

查询结果:

 
(6)bool用来做复合查询

复合语句可以合并,任何其他查询语句,包括符合语句。这也就意味着,复合语句之间
可以互相嵌套,可以表达非常复杂的逻辑。

must:必须达到must所列举的所有条件

 

must_not,必须不匹配must_not所列举的所有条件。

should,应该满足should所列举的条件。

实例:查询gender=m,并且address=mill的数据

 

查询结果:

 

must_not:必须不是指定的情况

实例:查询gender=m,并且address=mill的数据,但是age不等于38的

 

查询结果:

最新文章
计算机系统优化的几种方法,轻松几个方法让电脑恢复正常速度
大家是不是经常出现这个的问题,电脑使用的越久,开机的时间会越来越长。这是因为随着使用时间的增加,电脑垃圾也会越来越多,影响到电脑的运行速度。那么有什么办法能解决电脑开机慢的问题吗?一、优化系统1、减少
视频号有效粉丝怎么买下单呢?视频号有效关注人数怎么算?
近年来,随着短视频的火爆,越来越多的人开始关注视频号。而为了提高视频号的曝光量和影响力,许多商家和自媒体人开始关注如何吸引有效粉丝。那么,如何让粉丝下单呢?如何计算视频号的关注人数是否有效呢?本文将为你一一解答。视频号有效粉丝怎
用AI绘制超逼真美女写真—最强生成工具推荐及详尽操作指南
DeepArt:使用深度神经网络,DeepArt能将普通的照片转化为艺术画作,其效果惊艳且充满创意。它的操作相对简单,非常适合不具备专业绘画技能的用户。但需要付费才能获得高清图像。搜狐简单AI:这款工具的功能相对丰富,不仅支持多种风格,还
独立站运营如何提升自主性?
在当下这个数字化时代,独立站已成为众多品牌和企业拓展线上业务的重要阵地。然而,面对激烈的市场竞争和瞬息万变的网络环境,如何有效提升独立站运营的自主性,成为了我们每一个运营者必须深思的问题。根据我多年的实战经验,我发现自主性
百度广告多用什么搜索引擎_百度搜索广告
赢在广告少!必应取代百度成国内桌面搜索引擎第一【CNMO新闻】提到百度相信大多数人的第一印象都会想到百度搜索。作为国内最知名的搜索引擎,自从谷歌退出国内市场后,百度就开始坐稳还有呢? 微软必应在中国内地桌面搜索市场的份额便进入了
Postman环境变量以及设置token全局变量!
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多
刁哥数学官方版 V2.0.1安卓版
刁哥数学官方版是一款高考数学学习软件。软件学习方式独特,数学学习高效,见效快,是高考充分阶段好帮手,让用户能观看所有视频,并下载。有需要的用户欢迎下载体验亲爱的小朋友,2016年高考无论你渴望数学要突破145,还是仅仅梦想着及格
谷歌两步验证:保护你的账户安全
随着网络安全威胁的不断增加,Google(谷歌)推出了一种强大的安全功能,即谷歌两步验证。这是一种为用户提供额外安全防护的措施,能够有效防止未经授权的人访问你的谷歌账户。谷歌两步验证是一种加强用户账户安全的方法。除了输入正确的用
进攻即是最好的防御!练习黑客技术的在线网站
1、bWAPP 免费和开源的web应用程序安全项目。它有助于安全爱好者及研究人员发现和防止web漏洞。 地址:http://www.itsecgames.com/ 2、Damn Vulnerable iOS App (DVIA) DVIA是一个iOS安全的应用。它的主要目标给移动安全爱好者学习iO
相关文章
推荐文章
发表评论
0评