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

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

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

索引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,通配符查询和前缀查询不会被分析

原文地址:https://www.cnblogs.com/rsapaper/p/9675225.html