0%

JAVA API

Transport Client:TransportClient不推荐使用,而推荐使用Java High Level REST Client,并将在Elasticsearch 8.0中删除。
Java Low Level REST Client:低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。兼容所有ES版本
Java High Level REST Client:高级别的REST客户端,基于低级别的REST客户端,增加了编组请求JSON串、解析响应JSON串等相关api。使用的版本需要保持和ES服务端的版本一致,否则会有版本问题。

阅读全文 »

Analysis

1
2
3
4
5
6
7
8
9
10
11
12
分析器:
1.character filter(mapping):分词之前预处理(过滤无用字符、标签等,转换一些&=>and 《es》=> es
HTML Strip Character Filter:html_strip 自动过滤html标签
参数:escaped_tags 需要保留的html标签

Mapping Character Filter:type mapping

Pattern Replace Character Filter:type pattern_replace

4.tokenizer(分词器):分词

5.token filter:停用词、时态转换、大小写转换、同义词转换、语气词处理等。如:has=>have him=>he apples=>apple
阅读全文 »

Painless

Painless是一种专门用于Elasticsearch的简单,用于内联和存储脚本,类似于Java,也有注释、关键字、类型、变量、函数等,安全的脚本语言。它是Elasticsearch的默认脚本语言,可以安全地用于内联和存储脚本。

阅读全文 »

底层原理

正排索引(doc values )VS 倒排索引

概念:从广义来说,正排索引(doc values ) 本质上是一个序列化的列式存储。列式存储 适用于聚合、排序、脚本等操作,所有的数字、地理坐标、日期、IP 和不分析( not_analyzed )字符类型都会默认开启。

倒排索引的优势在于查找包含某个项的文档,相反,也可以用它确定哪些项是否存在单个文档里。

优化:es官方是建议,es大量是基于os cache来进行缓存和提升性能的,不建议用jvm内存来进行缓存,那样会导致一定的gc开销和oom问题,给jvm更少的内存,给os cache更大的内存。比如64g服务器,给jvm最多4 ~ 16g(1/16 ~ 1/4),os cache可以提升doc value和倒排索引的缓存和查询效率。

总结:全文搜索需要用倒排索引,而排序和聚合则需要使用 正排索引。

阅读全文 »

查询语法

Searchtimeout

① 设置:默认没有timeout,如果设置了timeout,那么会执行timeout机制。

② Timeout机制:假设用户查询结果有1W条数据,但是需要10″才能查询完毕,但是用户设置了1″的timeout,那么不管当前一共查询到了多少数据,都会在1″后ES讲停止查询,并返回当前数据。

③ 用法:GET /_search?timeout=1s/ms/m

阅读全文 »

基本概念

ES是基于Lucene分布式搜索服务,可以存储整个对象或文档,分布式的实时文件存储,每个字段都被索引并可被搜索,分布式的实时分析搜索引擎,可以扩展到上百台服务器,处理PB级结构化或非结构化数据。

与传统数据库的对比

阅读全文 »