ES DSL语法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES DSL语法相关的知识,希望对你有一定的参考价值。
参考技术A 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
ES(elasticsearch) query DSL 查询语法
"query_string": { "default_field": "name", "query": "被检索的字符串" } "term": { "name": "被检索的字符串" } "terms": { "name": [ "被检索的字符串1", "被检索的字符串2" ] } "multi_match": { "query": "被检索的字符串", "fields": [ "name", "city" ] } "match": { "name": "name 是字段名,这段话是要检索的文本" } "match_phrase": { "name": "完整匹配" } "range": { "age": { "gte": 10, "lte": 20 } } "bool": { "must_not": { "term": { "name": { "value": "被检索的字符串" } } }, "filter": { "exists": { "field": "被检查的字段名" } } }
以上是关于ES DSL语法的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Search | 记一次Kibana执行ES-DSL脚本实战思考过程