原文地址: https://www.elastic.co/guide/cn/elasticsearch/guide/current/_more_complicated_searches.html, 版权归 www.elastic.co 所有
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_more_complicated_searches.html
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_more_complicated_searches.html
请注意:
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
更复杂的搜索edit
现在尝试下更复杂的搜索。 同样搜索姓氏为 Smith 的员工,但这次我们只需要年龄大于 30 的。查询需要稍作调整,使用 过滤器 filter ,它能高效地执行一个结构化查询。
GET /megacorp/employee/_search { "query" : { "bool": { "must": { "match" : { "last_name" : "smith" } }, "filter": { "range" : { "age" : { "gt" : 30 } } } } } }
目前无需太担心语法问题,后续会更详细地介绍。只需明确我们添加了一个 过滤器(filter) 用于执行一个范围查询,并复用之前的 match
查询。现在结果只返回了一名员工,叫 Jane Smith,32 岁。
{ ... "hits": { "total": 1, "max_score": 0.30685282, "hits": [ { ... "_source": { "first_name": "Jane", "last_name": "Smith", "age": 32, "about": "I like to collect rock albums", "interests": [ "music" ] } } ] } }