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}