复合查询除布尔查询,还有其他查询,可见官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/compound-queries.html

布尔查询支持的子查询类型共有四种,分别是:
查询上下文:

  • must:文档必须匹配must查询条件,贡献评分
  • should:文档应该匹配should子句查询的一个或多个,贡献评分
    过滤上下文:
  • must_not:文档不能匹配该查询条件,不贡献评分
  • filter:过滤器,文档必须匹配该过滤条件,跟must子句的唯一区别是,filter不贡献评分;

1、match Query:

全文匹配,先分词再匹配,用于模糊查询

2、term Query:

精准查询

3、单条件查询

1
2
3
4
5
6
7
8
9
10
"query": {
"bool": {
"filter": {
"term": {
"SourceName": "料斗温度"
}
}
}
}
}

4、多查询条件 and

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"query": {
"bool": {
"filter": [
{
"range": {
"Time": {
"lt": 1663921028000
}
}
},
{
"term": {
"SourceName": "料斗温度"
}
}
]
}
}
}

5、Filter

搜索精确值、范围值

6、Query

模棱两可的结果,全文搜索

term在查询时只能精确查询,match是全文查询,而字段类型为keyword的内容不管用哪种方式,都只能精确查询