elasticsearch学习笔记(二十六)——Elasticsearch query DSL搜索实战

2019-04-27
阅读 3 分钟
1.9k
下面先解释一下ES的GET+request body这种模式一般我们知道HTTP协议一般是不允许get请求带上request body,但是因为get更加适合描述查询数据的操作,因此还是这么用了。碰巧当前很多浏览器或是服务器也都支持GET+request body模式如果遇到不支持的场景,也可以用POST+request body模式.

elasticsearch学习笔记(二十五)——Elasticsearch mapping详解以及索引内部原理

2019-04-27
阅读 9 分钟
6.7k
上面是插入数据自动生成的mapping,还有手动生成的mapping。这种自动或手动为index中的type建立的一种数据结构和相关配置,称为mapping。下面是手动创建的mapping。

elasticsearch学习笔记(二十四)——Elasticsearch query string语法以及_all元数据原理

2019-04-27
阅读 3 分钟
4.4k
对于query string只要掌握q=field:search content的语法,以及+和-的含义+:代表包含这个筛选条件结果-:代表不包含这个筛选条件的结果

elasticsearch学习笔记(二十三)——Elasticsearch 分页搜索以及深分页性能问题

2019-04-27
阅读 2 分钟
6k
Elasticsearch分页搜索采用的是from+size。from表示查询结果的起始下标,size表示从起始下标开始返回文档的个数。示例:

elasticsearch学习笔记(二十二)——Elasticsearch multi-index搜索模式以及搜索原理

2019-04-26
阅读 1 分钟
2.4k
先说明一下,低版本的ES一个index是支持多type的,所以就有multi-type这一种搜索模式,这里不做详细讲解,因为和multi-index搜索模式是基本一样的。而且高版本的ES会弃用type。

elasticsearch学习笔记(二十一)——Elasticsearch _search结果的含义以及timeout机制

2019-04-23
阅读 2 分钟
3.8k
took: 整个搜索请求花费了多少毫秒timed_out:表示请求是否超时hits.total: value表示返回结果的总数,relation表示关系 例如一般是eq表示相等hits.max_score: 表示本次搜索的所有结果中,最大的相关度分数是多少,每一条document对于search的相关度,越相关,_score分数就越大,排位就越靠前hits.hits: 表示查询出来doc...

elasticsearch学习笔记(二十)——Elasticsearch bulk api的奇特json格式与底层性能优化关系

2019-04-22
阅读 3 分钟
1.9k
由于bulk中的每个操作都可能要转发到不同的node的shard去执行,假设我们不用这种奇特的json格式,采用比较良好的json数组格式,允许任意的换行,整个可读性非常棒,读起来很爽。但是ES拿到这种标准格式的json串之后,要按照下述流程去进行执行处理。格式如下:[{

elasticsearch学习笔记(十九)——Elasticsearch document查询内部原理

2019-04-21
阅读 1 分钟
2.1k
(1)客户端发送请求到任意一个node,这个node就成为了协调节点coordinating node(2)协调节点coordinating node会对document进行路由,将请求转发到包含该document的对应的node上面去,此时会使用round-robin随机轮询算法,在primary shard以及所有的replica shard中随机选择一个,让打过来的读请求实现负载均衡(3)...

elasticsearch学习笔记(十八)——Elasticsearch document增删改内部原理,写一致性机制

2019-04-21
阅读 3 分钟
2.1k
下面直接点,先描述一下一个增删改请求打过来Elasticsearch内部做了什么。如图(1)对于客户端首先会选择一个节点node发送请求过去,这个节点node就是协调节点coordinating node(2)协调节点coordinating node会对docuemnt数据进行路由,将请求转发给对应的node(含有primary shard)(3)实际上node的primary shard会...

elasticsearch学习笔记(十七)——Elasticsearch document数据路由原理以及主分片的不可变

2019-04-20
阅读 2 分钟
2.4k
我们知道,一个index的数据会被分成多个分片shard,所以说一个document只能存在与一个shard中。当客户端创建document的时候,elasticsearch此时就需要决定这个document是放在这个index的哪个分片shard中,这个过程就称之为document routing,即数据路由。

elasticsearch学习笔记(十六)——Elasticsearch mget批量查询api实战

2019-04-20
阅读 2 分钟
2.7k
首先说明一下为什么需要批量查询操作?假设一下比如说我们没有批量查询的操作,那么当我们获取数据的时候,就是一条一条的查询。设想一下我们要获取100条数据,那么就要发送100次请求,这个开销时很大的。但是有了批量查询的话,查询100条数据,就只需要发送一次网络请求就可以了,网络请求的性能开销缩减100倍。

elasticsearch学习笔记(十五)——Elasticsearch partial update内置乐观锁并发控制

2019-04-20
阅读 1 分钟
2.8k
Elasticsearch partial update内置了乐观锁并发控制机制。同样是基于_version(新版本更新为if_seq_no和if_primary_term)进行乐观锁的并发控制。详细请看:[链接]这里多提一点就是使用partial update有一个参数叫retry_on_conflict,也就是可以基于retry策略:

elasticsearch学习笔记(十四)——Elasticsearch partial update实现原理和实践

2019-04-20
阅读 2 分钟
2.6k
一般对应到应用程序中,每次的执行流程基本都是这样的:(1)应用程序先发起一个get请求,获取到document,展示到前台界面,供用户查看和修改(2)用户在前台界面修改数据,发送到后台(3)后台代码会将用户修改的数据在内存中进行执行,然后封装好修改后的全量数据(4)然后在发送PUT请求到ES中,进行全量替换(5)ES会...

elasticsearch学习笔记(十三)——Elasticsearch乐观锁并发控制实战

2019-04-20
阅读 4 分钟
12.1k
1、elasticsearch基于_version(新版本更新为if_seq_no和if_primary_term)进行乐观锁的并发控制 (1)先构造一条数据 {代码...} (2)模拟两个客户端都获取到同一条数据 {代码...} (3)其中一个客户端先更新了一下这个数据 {代码...} (4)另外一个客户端,尝试基于version=1的数据去修改,同样带上version版本号,进...

elasticsearch学习笔记(十二)——Elasticsearch并发冲突问题以及锁机制

2019-04-19
阅读 2 分钟
3.2k
对于一般的ES操作流程是:1、先get document数据,比如获取到商品数据,将数据显示到网页上,同时在内存中缓存该documentd的数据2、当网页发生了购买后,直接基于内存中的数据,进行计算和操作3、将计算后的结果写回ES中

elasticsearch学习笔记(十一)——document的核心元数据、操作以及原理

2019-04-19
阅读 3 分钟
2.2k
1、_index代表一个document存放在哪个index中2、对于document,类似的数据都是放在一个索引里面的,,非类似的数据放在不同的索引中。例如,product_index是包含了所有商品的index,sales_index是包含了所有商品的销售数据的index,inventory_index是包含了所有库存相关的数据。如果想把所有的这些数据都放在一个索引中,...

elasticsearch学习笔记(十)——Elasticsearch横向扩容过程与容错机制

2019-04-17
阅读 2 分钟
3.8k
对于ES默认创建的索引有10个shard,其中有5个是primary shard,5个是replica shard。在ES内部会自动做一些事情:(1)primary shard & replica shard会自动负载均衡。均匀的分布在各个节点(2)保持每个节点node拥有更少的shard,IO/CPU/Memory资源给每个shard分配更多,使得每个shard性能更好(3)Elasticsearch的扩...

elasticsearch学习笔记(九)——shard&replica机制以及ES集群节点的问题

2019-04-17
阅读 2 分钟
3.6k
(1)一个index包含多个shard(2)每个shard都是一个最小工作单元,承载部分数据,可以说就是一个lucene实例,拥有完整的建立索引和处理请求的能力(3)每当ES集群增加节点时,shard会自动在nodes中实现负载均衡(4)对于primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica...

elasticsearch学习笔记(八)——剖析Elasticsearch的基础分布式架构

2019-04-17
阅读 1 分钟
2k
Elasticsearch是一套分布式系统,它隐藏了复杂的分布式机制,可以应对大数据。像分片机制:我们可以随随便便就将一些document插入到es集群中去,不需要关心数据是怎么进行分片的,数据到哪个shard中去cluster discovery:集群发现机制shard负载均衡:将shard分配到ES集群节点上面去,这个过程ES是自动进行均匀分配的,以...

elasticsearch学习笔记(七)——快速入门案例实战之电商网站商品管理:嵌套聚合,下钻分析,聚合分析

2019-04-16
阅读 3 分钟
2k
为了描述ES是如何进行嵌套聚合、下钻分析,聚合分析。下面通过五个业务需求来进行描述。 1、计算每个tag下的商品数量 由于tag是一个数组,所以其实统计的就是针对tag数组中的每个值,所有文档中tag字段中包含这个值的文档数量。 {代码...} 2、对名称中包含yagao的商品,计算每个tag下的商品数量 {代码...} 3、计算每个ta...

elasticsearch学习笔记(六)——快速入门案例实战之电商网站商品管理:多种搜索方式

2019-04-16
阅读 6 分钟
3.1k
简单见一下查询结果的各个值的含义:took:耗费的时间 单位是毫秒timed_out:是否超时_shards: total是指打到的primary shard(或者replica shard)的个数,successful是指查询成功的分片数,skipped是指跳过的分片个数,failed是指查询失败的分片的个数hits.total:value代表查询匹配的总数,relation代表The count is accur...

elasticsearch学习笔记(五)——快速入门案例实战电商网站商品管理:集群健康检查,文档的CRUD

2019-04-16
阅读 6 分钟
2.8k
首先来讲一下ES为什么面向文档以及面向文档的好处。(1)一般应用系统的数据结构都是面向对象的,结构复杂,操作起来特别不方便。如果将对象数据存储到数据库中,只能拆解开来,变为扁平的多张表,每次查询的时候还得还原回对象格式,相当的麻烦。(2)ES是面向文档的,文档中存储的数据结构,与面向对象的数据结构是一...

elasticsearch学习笔记(四)——在windows上安装和启动Elasticsearch

2019-04-16
阅读 2 分钟
6.2k
下面先用windows作为开发环境,之后开发采用linux操作系统:windows10JDK版本:1.8.0_201elasticsearch:7.0.0kibana:7.0.0

elasticsearch学习笔记(三)——Elasticsearch的核心概念

2019-04-16
阅读 2 分钟
2.6k
lucene是最先进、功能强大的搜索库。但是直接基于lucene开发,会非常的复杂。它的api很复杂,只是实现一些简单的功能,可能就需要写大量的java代码。要用好lucene,需要深入了解其内部原理,包括各种索引结构。而elasticsearch,它是基于lucene,隐藏了lucene的复杂性,对外提供简单易用的restful api接口、java api接口...

elasticsearch学习笔记(二)——elasticsearch的功能、适用场景以及特点介绍

2019-04-15
阅读 2 分钟
4.3k
学习了什么是Elasticsearch之后,针对工程而言,我们更加关心的是Elasticsearch它能干什么?能在什么地方发挥作用?跟其它类似的东西相比它不同的地方在哪里?归纳起来就是Elasticsearch在什么场景下,相比于其他类似的技术而言,它更适合做什么

elasticsearch学习笔记(一)——大白话告诉你什么是elasticsearch

2019-04-15
阅读 2 分钟
3.3k
Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.即:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web...