说明语法查询所有[match_all]关键词查询[term]范围查询[range]前缀查询[prefix]通配符[wildcard]多id查询[ids]模糊查询[fuzzy]布尔查询[bool]多字段查询[multi_match]默认字段分词查询[query_string]
说明
ES中提供了一种强大的检索数据方式,这种检索方式称之为
Query DSL(Domain Specified Language)
。语法
GET
查询所有[match_all]
# query DSL 语法 GET /products/_search { "query":{ "match_all": {} } }
关键词查询[term]
# term 基于关键词查询 # keyword integer double date类型 不分词 全部内容搜索 # text 类型 ES中默认使用标准分词: 中文单字分词,英文单词分词 部分搜索
# term 基于关键词查询 # keyword integer double date类型 不分词 全部内容搜索 # text 类型 ES中默认使用标准分词: 中文单字分词,英文单词分词 部分搜索 GET /products/_search { "query": { "term": { "title": { "value": "雪融融" } } } }
范围查询[range]
# 范围查询_range GET /products/_search { "query": { "range": { "price": { "gte": 200, "lte": 300 } } } }
前缀查询[prefix]
# 前缀查询 GET /products/_search { "query": { "prefix": { "title": { "value": "冰" } } } }
通配符[wildcard]
# 通配符查询[wildcard] ?匹配一个 *匹配多个 GET /products/_search { "query": { "wildcard": { "description": { "value": "ca?" } } } }
多id查询[ids]
#多ids查询 ,查询一组符合条件的id GET /products/_search { "query": { "ids": { "values": [1,2,3] } } }
模糊查询[fuzzy]
# fuzzy模糊查询 最大模糊错误 0-2之间 # 搜索关键词长度为2不允许存在模糊 # 搜索关键词长度为3-5 允许一次模糊 # 关键词长度大于5 允许最大2模糊 GET /products/_search { "query": { "fuzzy": { "title": "冰墩儿" } } }
布尔查询[bool]
must:相当于&&,同时成立 should:相当于||, 成立一个即可 must_not:相当于!,不能满足任何一个
# boolean GET /products/_search { "query": { "bool": { "should": [ { "term": { "title": { "value": "冰墩墩" } } } ] } } }
多字段查询[multi_match]
字段类型分词,将查询条件分词之后进行查询该字段,如果字段不分词将查询条件作为整体进行查询。
# multi_match # query 输入关键词 输入一段文本 GET /products/_search { "query": { "multi_match": { "query": "冰墩墩", "fields": ["title","description"] } } }
默认字段分词查询[query_string]
查询字段分词就将查询条件分词查询,查询字段不分词就像查询条件不分词
# query_string GET /products/_search { "query": { "query_string": { "default_field": "description", "query": "雪融融" } } }