4.2k 4 分钟

# 与 mongoDB 的区别 MongoDB ElasticSearch 备注 定位 (文档型) 数据库 (文档型) 搜索引擎 一个管理数据,一个检索数据 资源占用 一般 高 mongo 使用 c++, es 使用 Java 开发 写入延迟 低 高 es 的写入延迟默认 1s, 可配置,但是要牺牲一些东西 全文索引支持度 一般 非常好 es 本来就是搜索引擎,这个没啥可比性 有无 Schema 无 无 两者都是无 Schema 支持的数据量 PB+ TB+ ~ PB 两者支持的量并不好说的太死,都支持分片和横向扩展,但是相对来说 MongoDB...
2.8k 3 分钟

# 集群的原理 一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。 当一个节点被选举成为 主 节点时, 它将负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等。 而主节点并不需要涉及到文档级别的变更和搜索等操作,所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会成为瓶颈。...
316 1 分钟

# 分析 做全文搜索就需要对文档分析、建索引。从文档中提取词元(Token)的算法称为分词器(Tokenizer),在分词前预处理的算法称为字符过滤器(Character Filter),进一步处理词元的算法称为词元过滤器(Token Filter),最后得到词(Term)。这整个分析算法称为分析器(Analyzer)。 文档包含词的数量称为词频(Frequency)。搜索引擎会建立词与文档的索引,称为倒排索引(Inverted Index)。 Analyzer 按顺序做三件事: 使用 CharacterFilter 过滤字符 使用 Tokenizer 分词 使用 TokenFilter...
963 1 分钟

# 映射 精确值 如它们听起来那样精确。例如日期或者用户 ID,但字符串也可以表示精确值,例如用户名或邮箱地址。对于精确值来讲, Foo 和 foo 是不同的, 2014 和 2014-09-15 也是不同的。 精确值很容易查询。结果是二进制的:要么匹配查询,要么不匹配。这种查询很容易用 SQL 表示: WHERE name = "John Smith" AND user_id = 2 AND date >...
2k 2 分钟

# 并发处理 悲观并发控制 这种方法被关系型数据库广泛使用,它假定每个操作都会有冲突发生,因此阻塞访问资源以防止冲突。 一个典型的例子是读取一行数据之前先将其锁住,确保只有放置锁的线程能够对这行数据进行修改。 乐观并发控制 Elasticsearch 中使用的这种方法是假定冲突不可能发生,并且不会阻塞正在尝试的操作。 然而,如果源数据在读写当中被修改,更新将会失败。应用程序接下来将决定该如何解决冲突。 例如,可以重试更新、使用新的数据、或者将相关情况报告给用户。 Elasticsearch 默认使用乐观并发控制,每个文档都有一个 _version (版本)号,当文档被修改时版本号递增。...
9.7k 9 分钟

# 数据操作 # 集群健康 运行 _cat API curl -X GET "localhost:9200/_cat/health?v"返回内容: epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1475247709 17:01:49 elasticsearch green 1 1 0 0 0 0 0 0 - 100.0%status...
1.8k 2 分钟

# 基础 # 安装 略 # 使用 demo 如果你正在使用 Java,在代码中你可以使用 Elasticsearch 内置的两个客户端: 节点客户端(Node client) 节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。 传输客户端(Transport client) 轻量级的传输客户端可以将请求发送到远程集群。它本身不加入集群,但是它可以将请求转发到集群中的一个节点上。 两个 Java 客户端都是通过 9300 端口并使用 Elasticsearch 的原生 传输...
353 1 分钟

# Elasticsearch Elasticsearch: 权威指南 中文版 elastic 官网 # 简介 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合: Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索,还有 search-as-you-type 和 did-you-mean 的建议。 卫报 使用 Elasticsearch 将网络社交数据结合到访客日志中,为它的编辑们提供公众对于新文章的实时反馈。 Stack Overflow...
375 1 分钟

# LocalCache 存在本地的缓存 # 访问流程 1、应用程序输入需要写缓存的数据 2、读取 localcache 是否存在,如果不存在就去读下一个 3、返回数据 # 优点 相比 memcache 能进一步降低网络请求的开销 (5-10ms => 0.01ms) # 限制 比如说现在正在用的 yac localcache 存储容量有限 每个实例共享 16M key + 128M value 数据不保证强一致性,可能不同实例短时间内会获取到不同的 value 对于只允许请求一次的 api 结果 cache 不适用 不能主动 delete, LocalCache 分布在所有...
1.2k 1 分钟

1. 输入网址后,查询浏览器缓存 2. 查询浏览器 dns 缓存 3. 查询操作系统 dns 缓存 4. 请求 dns 服务器,查询 dns 服务器缓存 5. 获得 ip,静态资源走 cdn 缓存。动态数据走服务器 6. 如果配置了页面缓存,走页面缓存 7. 如果配置了本地缓存(localcache),走本地缓存 8. 如果配置了分布式缓存(如 redis 等等),走分布式缓存 9....
-->