GET /索引名/_doc/_search {json格式请求体数据}
查询所有
# query DSL 语法:查询所有 match_all
GET /products/_doc/_search
{
"query":{
"match_all":{}
}
}
# 不写_doc也可以
# 即GET /products/_search
基于关键词查询
# term 基于关键词查询
# keyword 类型 日后搜索使用 全部内容搜索 不分词
# integer double 类型 不分词
# 除了text类型分词,其余类型均不分词
# text 类型 默认 标准分词器 中文单字分词 英文单词分词
{
"query":{
"description":{
"value":"真"
}
}
}
范围查询
# 范围查询 range
# gt 大于 lt小于 gte是大于大于 lte是小于等于
{
"query":{
"range":{
"price":{
"gt":0,
"lte":5
}
}
}
}
前缀查询
# prefix 通过关键词的前缀进行查询
GET /products/_search
{
"query":{
"prefix":{
"title":{
"value":"商品"
}
}
}
}
通配符查询
# wildcard 通配符查询 ?用来匹配一个任意字符 *用来匹配多个任意字符
GET /products/_search
{
"query":{
"wildcard":{
"title":{
"value":"商*"
}
}
}
}
多id查询
# ids关键字:值为数值类型,用来根据一组_id获取多个对应的文档
GET /products/_search
{
"query":{
ids:{
"values":[1,2,4]
}
}
}
模糊查询
# fuzzy 模糊查询 模糊范围[0,2]
# 搜索关键词长度为2及一下,不允许出现模糊
# 搜索关键词长度为3-5,允许出现一次模糊
# 搜索关键词长度大于5,允许出现二次模糊
{
"query":{
"fuzzy":{
"title":"商拼1"
}
}
}
布尔查询
# bool 关键字:用来组合多个条件实现复杂程序
must:相当于&&同时成立
should:相当于||成立一个就行
must_not:相当于!不能满足任何一个
GET /products/_search
{
"query":{
"bool":{
"must":[
{
"ids":{
"values":[1]
}
},{
"term":{
"title":{
"value":"商品"
}
}
}
]
}
}
}
多字段查询
# 多字段查询 multi_match
# 注意:query 输入关键词 或 输入一段文本
# 若要查询的字段分词,将查询条件分词之后进行查询 如果该字段不分词就会将查询条件作为整体进行查询
GET /products/_search
{
"query":{
"multi_match":{
"query":"商品",
"fields":["title","description"]
}
}
}
默认字段查询
# query_string
# 将query全部分词,然后查询
GET /products/_search
{
"query":{
"query_string":{
"default_field":"title",
"query":"商品类型得到的"
}
}
}
返回结果处理
# size 指定返回查询结果中的返回条数,默认返回10条
# from 用来指定起始返回位置,和 size关键字连用可实现分页效果
# sort 用来对查询结果进行排序,asc升序
# source 返回指定字段
GET /products/_search
{
"query":{
"query_string":{
"default_field":"title",
"query":"商品类型得到的"
}
},
"sort":[
"price":{
"order":"asc"
}
],
"size":3,
"from":0,
"_source":["id","title","description"]
}
分词器
# 插入的时候便插入分词器
# ik_max_word 细粒度
# ik_smart 粗粒度
PUT /test
{
"mapping":{
"properties":{
"title":{
"type":"text",
"analyzer":"ik_max_word"
}
}
}
}