12-DSL查询语法-精准查询

  精确查询一般是查找keyword、数值、日期、boolean等类型字段。不会对搜索条件分词。常见的有:
(1) term:根据词条精确值查询 
(2) range:根据值的范围查询

term查询

  因为精确查询的字段搜是不分词的字段,因此查询的条件也必须是不分词的词条。查询时,用户输入的内容跟自动值完全匹配时才认为符合条件。如果用户输入的内容过多,反而搜索不到数据。

语法说明

 示例

 1 # 精确查询
 2 
 3 #term查询--精确词条
 4 GET /hotel/_search
 5 {
 6   "query": {
 7     "term": {
 8       "city": {
 9         "value": "北京"
10       }
11     }
12   }
13 }
14 
15 #term查询--不精确词条
16 GET /hotel/_search
17 {
18   "query": {
19     "term": {
20       "city": {
21         "value": "北京鸟巢"
22       }
23     }
24   }
25 }
26 
27 #range查询
28 GET hotel/_search
29 {
30   "query": {
31     "range": {
32       "price": {
33         "gte": 2500,
34         "lte": 3000
35       }
36     }
37   }
38 }
View Code

搜索的是精确词条时

 搜索的内容不是词条,而是多个词语形成的短语时

 range查询

范围查询,一般应用在对数值类型做范围过滤的时候。比如做价格范围过滤。

语法

 示例

posted @ 2023-05-19 15:51  JustJavaIt  阅读(56)  评论(0编辑  收藏  举报