ES 查询主要分为两大类:词条查询(term)和全文查询(match)
参考:https://www.cnblogs.com/ljhdo/p/4577065.html
词条查询和全文查询的主要区别:前者对搜索关键词不分析(分词)直接构建查询,match类则会将搜索关键词分析后在构建查询
词条查询的语法有:term terms prefix wildcard regexp
全文查询的语法主要是match类:match match_phrase match_phrase_prefix multi_match
特别关注的语法解释:
wildcard 相当于 mysql的like,机械式匹配,效率慢,支持的通配符只有两个:*:0个或多个任意字符 , ?:任意单个字符
fuzzy 字符的相似度-编辑距离,通过算法匹配,和普通需求想法可能结果不一样
match_phrase 和match_phrase_prefix phrase (短语)除了要匹配短语分词外,并且保证各个分词的相对位置不变
查询语法另一种分类,也是和传统SQL对比
参考:https://www.cnblogs.com/shoufeng/p/11103913.html
1 term query – 索引词检索
1.1 term query – 不分词检索 =
1.2 terms query – in检索
2 prefix query – 前缀检索
3 wildcard query – 通配符检索 like
4 regexp query – 正则检索
5 fuzzy query – 纠错检索
6.其他复杂检索
_bulk
create:id不能为空,必须指定id,id相同时报错
index:id可以为空,不指定id时自动生成,id相同时覆盖
update :需要用doc 包括起来
{“update”:{“_index”: “bi_stat_order”,”_type”: “type”,”_id”: “mW2zxnEBerbeohH8xPZT”}}
{“doc”:{“date”: 1588118400000,”total”: 160}}
两行之间不使用分号分隔
可以直接指定index 和type ,省去每一行都要写index和type
POST bi_stat_order/type/_bulk
{“index”:{}}
{“date”: 1588118400000,”total”: 179}