ElasticSearch数据存储内容
1、shard是Elasticsearch数据存储的最小单位,index的存储容量为所有shard的存储容量之和。Elasticsearch集群的存储容量则为所有index存储容量之和。一个shard就对应了一个lucene的library。
2、可以将对es的操作记录下来,来确保当出现故障的时候,已经落地到磁盘的数据不会丢失,并在重启的时候可以从操作记录中将数据恢复过来。
3、在ElasticSearch中,倒排索引的各个段( segment )的数据存储在硬盘文件上,从整个倒排索引的段中读取字段数据之后,ElasticSearch引擎首先反转词条和文档之间的关系,创建文档和词条之间的关系,即创建顺排索引,然后把顺排索引存储在JVM的堆内存中。
4、Elasticsearch是一个分布式文档存储。Elasticsearch存储的是序列化为JSON文档的复杂数据结构,而不是以列行数据的形式存储信息。当集群中有多个Elasticsearch节点时,存储的文档分布在整个集群中,可以立即从任何节点访问。
5、查询速度。ES可以支持的查询类型多种多样,单一的term匹配,复杂的historm agg,甚至父子文档模式下bool查询之后继续做文本高亮,数据量越大查询时间越长。
Elasticsearch——search搜索入门
1、确保一次搜索请求可以在用户指定的timeout时长内完成,为一些时间敏感的搜索应用提供良好的支持。全局设置:配置文件中设置 search.default_search_timeout:100ms 。该设置不常用。
2、Elasticsearch使用的是 term frequency/inverse document frequency算法,简称为TF/IDF算法。
3、Elasticsearch天生具备搜索的强支持能力,与document、index一样,有一套专门的_search API来支持搜索功能,还有很多的搜索特性,不同的搜索类型,搜索功能较为复杂。
4、ElasticSearch的search一般有两个搜索类型 所有的搜索系统一般都是两阶段查询:第一阶段查询到匹配的docID,第二阶段再查询DocID对应的完整文档。
5、put 方法不带 id 发送请求行不行?可以看到使用 put 方法不带 id 请求会报错,也就是说 put 是不允许不带 id 请求的,而 post 是允许的。
6、泛查询在之前其实就有演示过,即像 q = xiaoming 这种不指定检索字段范围,会在所有字段中进行检索的查询即称为泛查询。反之,如果指定了字段,就能大大缩小范围。常见的指定字段的方式为 字段:检索条件字符 。
ElasticSearch常用查询方法总结
全文检索查询,是通过分析器,对查询条件进行分析,然后在全文本字段进行全文查询。全文搜索取决于mapping中设定的analyzer(分析器),这里使用的是ik分词器。所以在进行查询开发时候,需要先了解index的mapping,从而选择查询方式。
ElasticSearch的search一般有两个搜索类型 所有的搜索系统一般都是两阶段查询:第一阶段查询到匹配的docID,第二阶段再查询DocID对应的完整文档。
term 查询被用于精确值匹配,这些精确值可以是数字(number)、日期(date)、布尔值(bool)、未经过分析的字符串(keyword); term 查询对于输入的文本不分析,所以它将给定的值进行精确查询。
比如查询 tags:/trust*/ 。具体正则表达式语法参考: https:// 。