ES高级查询语法
1.match_all
1.1 返回源数据_source
1.2 返回指定条数size
1.3 分页查询from&size
1.4 指定字段排序sort
2.术语级别查询
2.1 term query 术语查询
2.2 term query 多术语查询
2.3 exists query
2.4 ids query
2.5 range query范围查询
2.5 prefix query 前缀查询
2.6 wildcard query 通配符查询
3.全文检索
3.1 match query 匹配查询
3.2 multi_match 多条件查询
3.3 match_phrase query
3.4 query_string
3.5 simple_query_string
4.ES深度分页问题
4.1 什么是深度分页
4.2 深度分页带来的后果
4.3 常见解决方案:避免深度分页
ES 分页问题: ES7之后,官方建议使用search_after分页,不建议使用scroll
from+size 性能低
scorll 性能中
search_after 性能高 海量数据分页推荐
5.ES 分词器
5.1切词器
词项过滤器:停用词,同义词
_analyze
"analyze":"standard" /ik_smart/ik_max_word
"filter":["upercase"] /["stop"]
"char_filter":{
"type":"html_strip" //html过滤器
}
5.2字符过滤器:
html过滤器,
字符映射过滤器
正则过滤器把手机号码隐藏,把特殊字符脏字*号显示
5.3 倒排索引的数据结构
英文停用词/中日韩停用词:a,an,and
es-ik/7.17.3/config/stopword.dic
es-ik/7.17.3/config/main.dic
词项:分词后的每一项词条
过滤器filter:
6.相关性
7.单字符串多字段查询
8.聚合操作
_search/scroll
ES7之后,官方建议使用search_after分页,不建议使用scroll
es_db/_pit?keep_alive=1m
POST /es_db/_pit?keep_alive=1m 3 #返回结果,会返回一个PID的值4
{
"id" :
"39K1AwEFZXNfZGIWZTN2N2Nrdk5RRjY3QjBma1h5aFRodwAWdkhjbE9YNVRTMUNDcWNQQVR2ZXYzdwAAAAAAAA
A9jhZvaGpLSDlzVVMxbW5idG5DZ0xEUHFRAAEWZTN2N2Nrdk5RRjY3QjBma1h5aFRodwAA"
56 } 7