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。