分享好友 最新动态首页 最新动态分类 切换频道
谷粒商城—分布式高级①.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的

 

查询结果:

最新文章
全面盘点:AI 数据分析报告与生成工具精选指南,满足多种办公需求
在当今这个数据驱动的时代有效地分析和利用数据成为了企业和个人获得竞争优势的关键。无论是企业决策者、市场分析师还是学术研究人员都需要借助强大的数据分析工具来解决和解读海量数据。本文将为您介绍几款优秀的数据分析报告与生成工具它
江阴盘龙区考研全日制培训学校咨询热线:   在线咨询: 点击交谈
新闻标题:云南江阴双龙街道考研全日制培训-考研全日制培训课程价格开班时间是什么2023年排行榜一览表江阴盘龙区附近比较好的考研培训班,考研全日制是江阴盘龙区考研全日制培训学校的重点专业,江阴市知名的考研全日制培训机构,也是国内
规模超15000亿!数字化服务市场增势强劲
数字经济蓬勃发展中,万千行业正不断强化数字化智能化能力,积极抢占数字时代先机,进而带动了数字化服务市场的日益增长和繁荣。7月23日,赛迪顾问发布《2023-2024年中国数字化服务市场研究年度报告》称,2023年,中国数字化服务市场保持强
适合学生党的头戴式耳机该如何选?|唐麦H5降噪蓝牙耳机真实测评
嗨咯,大家好呀,我是阿岚。我的表弟过几天要过生日了,我决定给他挑个耳机作为生日礼物。 本来一直在纠结是买入耳式耳机还是头戴式耳机,后来我上网查了下,发现头戴式耳机有利于保护耳道,于是我果断往这个类型挑选了。 在网上挑了很久
网站提交百度收录,网站提交百度收录方法
1. 提交网站:网站所有者可以通过百度平台提交网站,让百度搜索引擎知道网站的存在。提交后,百度会将网站加入待抓取的队列中。2. 抓取:百度的爬虫程序会定期访问提交的网站,抓取网站上的内容。这个过程依赖于网站的结构、内容更新频率以
【MIMO_OFDM】基于matlab空时分组编码MIMO_OFDM通信仿真(含QPSK调制解调,IFFT调制,空时编解码)【含Matlab源码 9767期】
⛳️座右铭:行百里者,半于九十。 更多Matlab信号处理仿真内容点击👇 ①Matlab信号处理 (进阶版) ②付费专栏Matlab信号处理(初级版) ⛳️关注CSDN海神之光,更多资源等你来!
高中英语选修课:英语文学欣赏-The-Nightingal-and-The-Rose夜莺与玫瑰-教学课件.pptVIP
TheNightingaleandTheRoseOscarWilde(1856-1900)BorninDublin,OscarWildeisanIrishpoet,dramatist,novelistandessayist,waseducatedatOxford,wherehewasgreatlyinfluencedbyhisteacherWalterPater.Bothofthemareconsideredthemostimpo
广西壮族自治区数字广西建设领导小组关于 印发《广西壮族自治区促进“互联网+ 社会服务”发展实施方案》的通知 (桂数广发〔2020〕2号)
各市、县人民政府,自治区人民政府各组成部门、各直属机构:  经自治区人民政府同意,现将《广西壮族自治区促进“互联网+社会服务”发展实施方案》印发给你们,请认真贯彻执行。  广西壮族自治区数字广西建设领导小组(代)  2020年3
大数据行业打击卖数据
导言:随着大数据技术的快速发展以及数字化时代的到来,数据已成为企业和个人生活中不可或缺的重要资产。有一部分企业或个人将倾向于将自己所获得的数据出售给第三方,这种行为引起了大数据行业的关注和警惕。本文将探讨大数据行业对于卖数
相关文章
推荐文章
发表评论
0评