DSL语法学习

(1)term和terms查询
(2)match查询
(3)rang范围查询
(4)wildcard查询
(5)fuzzy模糊查询
(6)highlight高亮显示
(7)bool查询
(8)聚合查询

<hr/>

查询:GET

GET/_search{ "query":{"term":{"user":"kimchy"}}}

查询document

#对age进行倒序查询
POST/pigg/_search
{
  "query": {"match_all": {}},
  "sort": [
    {"age": {"order": "desc"}}
  ]
}
#查询前2条数据,from是从0开始的
POST/pigg/_search
{
	"query": {"match_all": {}},
	"sort": [
		{"age" :{"order": "desc"}
	],
	"from": 0,
	"size": 2
}
关键词查询 (精确查询)
POST/aegis/positions/_search
{
	"query": {
		"term": {
			"title":"米"
		}
	}
}
分词查询
POST/aegis/positions/_search
{
	"query":{
		"match":{
			"title":"小米"
		}
	}
}

(_source源,过滤设置,指定结果中所包括的字段有哪些)
POST/aegis/positions/_search
{
	"query":{
		"match":{
			"title":"小米"
		}
	},
 "_source":["title","price"]
}
布尔查询 title是分词,brand是精确
POST/aegis/positions/_search
{
	"query":{
	 	"bool":{
	 		"must":[
	 			{
	 				"match":{
	 					"title":"小米"
	 				}
	 			},
	 			{
	 				"term":{
	 					"brand":"米"
	 				}
	 			}
	 		]
	 	}
	}
}

过滤器:过滤是针对搜索的结果进行过滤,过滤器主要的判断是文档是否匹配

过滤结果
POST/aegis/positions/_search
{
	"query":{
	 	"bool":{
	 		"must":[
	 			{
	 				"match":{
	 					"title":"小米"
	 				}
	 			},
	 			{
	 				"term":{
	 					"brand":"米"
	 				}
	 			}
	 		],
            "filter":[
                {
                     "range":{
                        "price":{
                            "gte":3298
                        }
                    }
                }
            ]
	 	}
	}
}
过滤完在排序
POST/aegis/positions/_search
{
	"query":{
	 	"bool":{
	 		"must":[
	 			{
	 				"match":{
	 					"title":"小米"
	 				}
	 			},
	 			{
	 				"term":{
	 					"brand":"米"
	 				}
	 			}
	 		],
            "filter":[
                {
                     "range":{
                        "price":{
                            "gt":3298
                        }
                    }
                }
            ]
	 	}
	},
    "sort":[
	 		{
                "price":"desc"
	 		}
	 	]
}
高亮显示
{
	"query":{
	 	"bool":{
	 		"must":[
	 			{
	 				"match":{
	 					"title":"小米"
	 				}
	 			},
	 			{
	 				"term":{
	 					"brand":"米"
	 				}
	 			}
	 		],
            "filter":[
                {
                     "range":{
                        "price":{
                            "gt":3298
                        }
                    }
                }
            ]
	 	}
	},
    "sort":[
	 		{
                "price":"desc"
	 		}
	 ],
    "highlight":{
        "pre_tags":["<tag1>"],
        "post_tags":["</tag2>"],
        "fields":{
            "title":{},
            "brand":{}
        }
    }
}
term query 查询适合keyword,numeric,data
terms,多个关键字查询
{
    "query":{
        "terms":{
            "title":["米","为"]
        }
    }
}

返回版本号: "version":true

短语查询
match_phrase_prefix前缀
{
    "query":{
        "match_phrase":{
            "title":"小米"
        }
    }
}
通配符查询
{
    "query":{
        "wildcard":{
            "title":"小*"
        }
    }
}
模糊查询
{
    "query":{
        "fuzzy":{
            "title":{
             	"value":"小米"
            }
        }
    }
}
{
    "query":{
      	"match":{
            "title":"小米"
        }
    },
     "highlight":{
            "fields":{
                "title":{}
            }
        }
}
聚合查询  查询价格的总价
{
    "aggs":{
        "price_sum":{
            "sum":{
                "field":"price"
            }
        }
    }
}


聚合查询   根据价格计算数量
{
    "size":0,
    "aggs":{
        "price_sum":{
            "terms":{
                "field":"price"
            }
        }
    }
}
聚合查询
{
    "query":{
        "range":{
            "price":{
                "gt":2799
            }
        }
    },
    "aggs":{
        "brandGroup":{
            "terms":{
                "field":"brand.keyword"
            },
            "aggs":{
                "priceAVG":{
                    "avg":{
                        "field":"price"
                    }
                }
            }
        }
    }
}
聚合查询:
brand出现错误,FeildData字段被禁用,要设置fielddata=true,或者加brand.keyword
{
   "query":{
       "match":{
         "title":"小米"
 		}
  	},
   "aggs":{
      "all_tags":{
          "terms":{
           "field":"brand.keyword"
     		}
 		}
 	}
}
聚合查询求平均值,完了再给值 + 10
{
    "aggs":{
        "avg_price":{
            "avg":{
                "script":{
                    "source":"doc.price.value + 10"
                }
            }
        }
    }
}
(9)嵌套查询:Nested
创建嵌套对象mapping
PUT /earth_index
{
    "mappings":{
        "_doc":{
            "properties":{
                "title":	{"type":"text"},
                "body":	{"type":"text"},
                "comments":{
                    "type":"nested",
                   	"properties":{
                        "name":	{"type":"text"},
                        "comment":	{"type":"text"},
                        "age":	{"type":"short"},
                        "stars":	{"type":"short"},
                        "date":	{"type":"date"}
                    }
                }
            }
        }
    }
}
添加数据
put /earth_index/_doc/1
{
    "title":"Nest eggs",
    "body":"Making your money work....",
    "comment":[
        {
        	"name":"JOhnSong",
            "comment":"Great article1",
           	"age":22,
            "stars":4,
            "date":"2019-11-13"
    	},
        {
        	"name":"superqiDream",
            "comment":"Great article2",
           	"age":23,
            "stars":5,
            "date":"2019-11-14"
    	}
    ]
}
非嵌套查询
get /earth_index/_doc/_search
{
    "query":{
        "bool":{
            "must":[
                {"match":{"comment.name":"superqiDream"}},
                {"match":{"comment.age":23}}
            ]
        }
    }
}
POST /earth_index/_doc/_search
{
    "query":{
        "nested":{
            "path":"comment",
            "query":{
                "bool":{
                    "must":[
                        {
                            "match":{
                                "comment.name":"superqiDream"
                            }
                        },
                        {
                            "match":{
                                "comment.age":31
                            }
                        }
                    ]
                }
            }
        }
    }
}

新增: POST

修改: PUT

删除:DELETE

11-20 16:54