数据架构:索引+文档+文档类型+映射

【索引 文档 文档类型 映射】

索引index

对逻辑数据的逻辑存储:关系型数据库表、MongoDB集合、CouchDb数据库索引

index <---shard<--- replica

索引:分片:副本=1:n:nm

文档document

相同字段必须有相同类型,一个字段可能多次出现在一个文档中

文档=文档类型+唯一标识符:在一个索引中,不同类型的文档可以有相同文档标识符

文档类型

一个博客应用程序可以保存文章和评论:一个索引对象可以通过文档类型存储不同用途的对象

【字段是分析、排序的对象】

在同一索引中所有文档类型中,一个叫title的字段必须有相同的类型:一个索引内,可以有多个文档类型,但是每个文档类型中的相同字段,必须有相同的类型

映射

每个文档类型都有映射,在映射汇总存储有关字段的信息。

【每个分片都是一个独立的Apache Lucene索引】

节点node 集群cluster 分片 shard

单节点内存、硬盘、响应客户端时间:将数据拆小成分片,每个分片可以放在不同的服务器上,数据在集群的节点间传播

副本 replica

副本是分片的精确复制,每个分片可以有0-n个副本

Elasticsearch可以有许多相同的分片,其中之一主分片primary shard被自动选择去更改索引操作

相同的分片=primary shard + replica shard

【提升副分片】

在主分片丢失时,例如改分片数据所在服务器不可用,集群将副本提升为新的主分片

【时光之门】

集群的状态由时光之门控制,每个节点在本地存储这些信息,并在节点中同步。

使用URI请求查询来搜索

【0-n个索引,指定或不指定文档类型】

curl -XGET 'localhost:9200/_search?pretty'  查询集群中的所有数据

curl -XGET 'localhost:9200/books,clients/_search?pretty' 查询books、clients两个索引

curl -XGET 'localhost:9200/books/es/_search?pretty' 在books索引的es类型这搜索

【使用Lucene查询语法来指定查询】

curl -XGET 'localhost:9200/books/_search?prety&q=published:2013&df=title&explain=true&default_operator=AND'

查询条件q

查询字段df :默认全部字段

用于分析查询的分析器analyzer: 默认索引字段对字典内容做分析的分析器来分析我们的查询

指定用于查询的默认布尔运算符default_operator:OR只要一个查询条件匹配就返回文档,AND全部匹配,OR为默认值

查询解释explain:默认false,从哪个分片获取的、计算得分的详细信息

结果排序 sort:例sort=published:asc,如果指定自定义排序则省略计算_score字段;如果在自定义排序的同时还需要追踪每个文档的得分,则需要设置track_scores=true

搜索超时timeout:例timeout=5s,查询将执行到给定的5秒,在那一刻,收集的结果将返回

查询结果窗口size、from:例size=5&from=10

搜索类型:默认值为query_then_fetch

小写扩展词lower_expanded_terms:默认true,扩展词将被小写

分析通配符和前缀analyze_ildcard:默认情况下false,通配符查询和前缀查询不会被分析

每个分片都是一个独立的Apache Lucene索引的更多相关文章

  1. 【云计算】K8S DaemonSet 每个node上都运行一个pod

    Kubernetes容器集群中的日志系统集成实践 Kubernetes是原生的容器编排管理系统,对于负载均衡.服务发现.高可用.滚动升级.自动伸缩等容器云平台的功能要求有原生支持.今天我分享一下我们在 ...

  2. linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?

    问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间是什么意思?linux系统的虚拟4G空间中,高位的1G是用于系统内核运行的,那 ...

  3. 对tomcat来说,每一个进来的请求(request)都需要一个线程,直到该请求结束。

    这段时间折腾了哈java web应用的压力测试,部署容器是tomcat 7.期间学到了蛮多散碎的知识点,及时梳理总结,构建良好且易理解的知识架构把它们组织起来,以备忘.对web应用开发者来说,我们很关 ...

  4. 如何搭建一个独立博客——简明Github Pages与Hexo教程

    摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...

  5. Spark:一个独立应用

    [TOC] Spark:一个独立应用 关于构建 Java和Scala 在Java和Scala中,只需要给你的应用添加一个对于spark-core的Maven依赖. Python 在Python中,可以 ...

  6. 有了Jenkins,为什么还需要一个独立的部署系统

    需不需要一个独立的部署系统是很多企业用户在构建持续交付流程中经常困惑的一个问题.也经常有用户会问我们,现在已经有Jenkins,它自身提供了丰富的部署插件(如WebSphere部署插件.Tomcat部 ...

  7. MongoDB 倾向于将数据都放在一个 Collection 下吗?

    不是这样的. Collection 的单个 doc 有大小上限,现在是 16MB,这就使得你不可能把所有东西都揉到一个 collection 里.而且如果 collection 结构过于复杂,既会影响 ...

  8. 每条sql语句实际上都是一个事物(事物多种类型解读)

    事务(数据库引擎) 事务是作为单个逻辑工作单元执行的一系列操作.一个逻辑工作单元必须有四个属性,称为原子性.一致性.隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务.原子性事务必须是原子工 ...

  9. 集群版本升级——rolling upgrade在ES 单节点从 restart 到加入集群,大概要 100s 左右的时间。也就是说,这 100s 内,该节点上的所有分片都是 unassigned 状态

    集群版本升级 Elasticsearch 作为一个新兴项目,版本更新非常快.而且每次版本更新都或多或少带有一些重要的性能优化.稳定性提升等特性.可以说,ES 集群的版本升级,是目前 ES 运维必然要做 ...

随机推荐

  1. LeetCode 格雷码序列的生成

    问题概述:在一组数的编码中,若随意两个相邻的代码仅仅有一位二进制数不同.则称这样的编码为格雷码. 2位数的格雷码序列:00 : 001 : 111 : 310 : 2找规律:假设要求n位的格雷码,先要 ...

  2. Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特

    代码地址如下:http://www.demodashi.com/demo/13257.html 1. 需求说明 本项目基于Python爬虫,爬取豆瓣电影上关于复仇者联盟3的所有影评,并保存至本地文件. ...

  3. 非常酷的 Javascript 简单调试工具Blackbird

    Blackbird 是一个开源的 Javascript 调试工具,默认提供一种非常酷的方式展现 Javascript 调试信息,如下图,效果如何呢? 在我们的日常的学习或工作中,经常都会接触到 Jav ...

  4. Mysql 没有nvl()函数,却有一个类似功能的函数ifnull()

    今天自己无聊写了看了一个查询需求随手写了一个sql语句,发现竟然不能运行,MySQL报[Err] 1305 - FUNCTION ceshi.nvl does not exist的错.才意识到自己写的 ...

  5. Redis之intset数据结构

    0.前言 redis中intset是一个整数集合, 只能存储整数类型的数据, 可以是16位, 32位, 或者是64位, 是以升序排列的数组进行保存数据,下面会介绍具体数据结构和对其操作过程. 1.数据 ...

  6. oracle10g安装,卸载

    一.安装 1.因为oracle的特殊性,笔者选择通过虚拟机安装windows7旗舰版安装数据库,大家的系统假设是windows xp.windows 7,windows 8能够直接安装,windows ...

  7. DSP6455的cmd文件

    DSP6455的cmd文件 CMD 的专业名称叫链接器配置文件,存放链接器的配置信息,DSP编译器的编译结果是未定位的,DSP也没有操作系统来定位执行代码,DSP系统的配置需求也不尽相同,因此需要定义 ...

  8. sigaction()之sa_mask

    man文档描述: sa_mask gives a mask of signals which should be blocked during execution of the signal hand ...

  9. python模块学习之re

    正则表达式本质就是表示某种规则的一串字符. 匹配的规则叫做模式(pattern),模式作用于对象. 模式和对象可以是Unicode或者字节,但是,不能够混用,比如:模式为Unicode,对象为字节,像 ...

  10. AtCoder Regular Contest 070 D - No Need 想法:利用单调性二分+bitset优化

    /** 题目:D - No Need 链接:http://arc070.contest.atcoder.jp/tasks/arc070_b 题意:给出N个数,从中选出一个子集,若子集和大于等于K,则这 ...