温馨链接
高级查询
子条件查询
特定字段查询所指特定值
Query context
在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score
来标识匹配的程度,旨在判断目标文档和查询条件匹配的有多好
全文本查询
针对文本类型数据
- 数据
- 全匹配(
match
):将name带有“浴”与“板”的全部查出来
{
“query”:{
“match”:{
“name”:“浴板”
}
}
}
- 习语匹配(
match_phrase
):只匹配name带有“浴板”这个词
{
“query”:{
“match_phrase”:{
“name”:“浴板”
}
}
}
- 多字段模糊匹配
multi_match
fields里面的字段都要包含“China”
{
“query”:{
“multi_match”:{
“query”:“China”,
“fields”:[“name”,“country”]
}
}
}
- 语法查询
query_string
:也可以结合field关键字
OR、AND
{
“query”:{
“query_string”:{
“query”:“霸 OR 池”
}
}
}
字段级别查询
针对结构化数据,如数字、日期等
关键词:term
{
“query”:{
“term”:{
“age”:“18”
}
}
}
- 字段范围查询
- gte:大于等于
- gt:大于
查询age在18到19之间
{
“query”:{
“range”:{
“age”:{
“gte”:18,
“lte”:19
}
}
}
}
Filter context
在查询过程中,只判断该文档是否,满足条件,只有Yes或者No
ES会将数据缓存,查询比Query快
{
“query”:{
“bool”:{
“filter”:{
“term”:{
“age”:“20”
}
}
}
}
}
- 匹配度都为0
复合条件查询
以一定的逻辑组合子条件查询
固定分数查询
- boost:查询指定分数
{
“query”:{
“constant_score”:{
“filter”:{
“match”:{
“name”:“浴缸”
},
“boost”:1
}
}
}
}
布尔查询
- must:与的逻辑
{
“query”:{
“bool”:{
“must”:[
{
“match”:{
“name”:“浴霸”
}
},{
“match”:{
“age”:“20”
}
}
]
}
}
}
- should:或的逻辑
{
“query”:{
“bool”:{
“should”:[
{
“match”:{
“name”:“浴霸”
}
},{
“match”:{
“age”:“20”
}
}
]
}
}
}
- must_not:非的逻辑
{
“query”:{
“bool”:{
“must_not”:[
{
“match”:{
“name”:“浴霸”
}
},{
“match”:{
“age”:“20”
}
}
]
}
}
}
…more
查询关键词结合使用。。。