ES提供了一种轻量级的检索方式来检索文档,和前几篇介绍的json
形式查询不同,他是采用query_string
形式检索。下面通过实例来讲解吧
GET /user/introduce/_search?q=name:lucy
在user
索引的introduce
类型中查询name
值为lucy
的文档
GET /_search?q=mary
这个简单搜索返回包含 mary
的所有文档,无论是key或者value只要包含mary就会返回
更复杂的查询
下面的查询针对tweents类型,并使用以下的条件:
-
name
字段中包含mary
或者john
-
date
值大于2014-09-10
-
_all
字段包含aggregations
或者geo
+name:(mary john) +date:>2014-09-10 +(aggregations geo)
这种 轻量 的查询字符串搜索效果还是挺让人惊喜的,很方便。但是,查询字符串搜索允许任何用户在索引的任意字段上执行可能较慢且重量级的查询,这可能会暴露隐私信息。所以就需要将query_string进行urlencode加密,但是这回使得阅读起来晦涩难懂。正因如此,我们经常在生产环境中更多地使用功能全面的 request body 查询API。