精确查询一般是查找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查询
范围查询,一般应用在对数值类型做范围过滤的时候。比如做价格范围过滤。