摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、调表实现:编程实现 ### 调表实现:编程实现 package com.yanqi.es; import java.util.Comparator; //存储kv类型数据 public class SkipList<K, V> { //头节点 private Node<K, V> first;
阅读全文
摘要:一、并发冲突处理机制剖析 ### 详解并发冲突 ~~~ # 在电商场景下,工作流程为: ~~~ 读取商品信息,包括库存数量 ~~~ 用户下单购买 ~~~ 更新商品信息,将库存数减一 ~~~ 如果是多线程操作,就可能有多个线程并发的去执行上述的3步骤流程, ~~~ 假如此时有两个人都来读取商品数据,两
阅读全文
摘要:一、分布式数据一致性 ### 分布式数据一致性 ~~~ 在分布式环境下,一致性指的是多个数据副本是否能保持一致的特性。 ~~~ 在一致性的条件下,系统在执行数据更新操作之后能够从一致性状态转移到另一个一致性状态。 ~~~ 对系统的一个数据更新成功之后,如果所有用户都能够读取到最新的值, ~~~ 该系
阅读全文
摘要:一、SkipList应用 ### 概述 ~~~ 假设某个索引字段中有sex,address字段,检索条件为:sex='female' and address='北京', ~~~ 给定查询过滤条件 sex='female'的过程就是先从 term index ~~~ 找到 femal 在 term d
阅读全文
摘要:一、Trie(扩展) ### Trie 被称作做字典树、前缀树(Prefix Tree)、单词查找树 ~~~ Trie 搜索字符串的效率主要跟字符串的长度有关(O(len(单词))) ~~~ 使用 Trie 存储 cat->1、dog->2、doggy->3、does->4、cast->5、add-
阅读全文
摘要:一、存储文件详解 ### 存储文件详解说明 ~~~ 通过ES-HEAD插件可以查看到一个索引的分片信息,图中一个绿色方块就代表一个分片Shard; ~~~ ES使用Lucene来处理shard级别的索引和查询, ~~~ 因此数据目录中的文件由Elasticsearch和Lucene共同编写。 ~~~
阅读全文
摘要:一、Elasticsearch中的数据结构 ### 倒排索引详解:概述 ~~~ 倒排索引是全文检索的根基,理解了倒排索引之后才能算是入门了全文检索领域。 ~~~ 倒排索引的的概念很简单,也很好理解。Elasticsearch/Lucene是如何实现这个结构的呢? Term Doc_1 Doc_2 Q
阅读全文
摘要:一、环境准备 ### 查询操作:准备数据 ~~~ # 添加数据一: POST /es_test/_doc/1 { "name": "hadoop添加文档", "description": "hadoop技术栈", "studymodel":"online", "pic": "http://www.b
阅读全文
摘要:一、Elasticsearch之原理剖析 ### 倒排索引 ~~~ Elasticsearch 使用一种称为倒排索引的结构,它适用于快速的全文搜索。 ~~~ 一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。 ### 例如,假设我们有两个文档,每个文档是如下内容:
阅读全文
摘要:一、Java API操作ES:文档操作 ### 编程实现:文档操作;添加doc ~~~ # 步骤五:文档操作;添加doc @Test public void addDoc() throws IOException { //准备一个添加文档的对象 final IndexRequest indexReq
阅读全文
摘要:一、Java API操作ES:查询操作 ### 查询操作:termquery ~~~ # 步骤八:查询操作:termquery @Test public void termQuery() throws IOException { //根据关键字 不分词检索 final SearchRequest s
阅读全文
摘要:一、Java API操作ES:创建索引:方法一 ### 创建索引:方法一 ~~~ # 步骤二:方法一:创建索引 @Test public void createIndex() { final CreateIndexRequest indexRequest = new CreateIndexReque
阅读全文
摘要:一、Java API操作ES ### Java API操作ES ### 创建一个maven工程:elasticsearch ~~~ # 官网说明: ~~~ https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.3/java-
阅读全文
摘要:一、Java API操作ES:创建client ### 创建Client package com.yanqi.es; import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; import org.ela
阅读全文
摘要:一、桶聚合 ### Bucket Aggregations,桶聚合。 ~~~ 它执行的是对文档分组的操作(与sql中的group by类似), ~~~ 把满足相关特性的文档分到一个桶里,即桶分, ~~~ 输出结果往往是一个个包含多个文档的桶(一个桶就是一个group) ~~~ bucket:一个数据
阅读全文
摘要:一、bulk 批量增删改 ### Bulk 操作解释将文档的增删改查一些列操作,通过一次请求全都做完。减少网络传输次数。 ~~~ # 语法: POST /_bulk {"action": {"metadata"}} {"data"} ### 操作示例 ~~~ # 如下操作,删除1,新增5,修改2。
阅读全文
摘要:一、聚合分析 ### 聚合介绍 ~~~ 聚合分析是数据库中重要的功能特性,完成对一个查询的数据集中数据的聚合计算, ~~~ 如:找出某字段(或计算表达式的结果)的最大值、最小值,计算和、平均值等。 ~~~ Elasticsearch作为搜索引擎兼数据库,同样提供了强大的聚合分析能力。 ~~~ 对一个
阅读全文
摘要:一、指标聚合:max min sum avg ### 示例一:查询所有书中最贵的 POST /book/_search { "size": 0, "aggs": { "max_price": { "max": { "field": "price" } } } } 二、文档计数count ### 示例
阅读全文
摘要:一、文档批量操作(bulk 和 mget) ### mget 批量查询 ~~~ 单条查询 GET /test_index/_doc/1,如果查询多个id的文档一条一条查询,网络开销太大。 GET /_mget { "docs" : [ { "_index" : "book", "_id" : 1 }
阅读全文