第3章 信息检索与结果过滤
“Elasticsearch uses Lucene under the covers to provide the most powerful full text search capabilities available in any open source product.Search comes with multi-language support,a powerful query language,support for geolocation,context aware did-you-mean suggestions,autocomplete and search snippets.The Search API allows to execute a search query and get back search hits that match the query.It can be executed across indices and types.The query can either be provided using a simple query string as a parameter,or using a request body”——www.elasticsearch.org
在Elasticsearch中的RESTful接口方式中,完成信息检索功能的关键词是_search,通过POST的方式发送到Elasticsearch,其后再跟“?q=查询词”等。其形式化表示方式是:
http://ipaddress:port/index_name/type_name/_search?q=
例如,可以以“curl -XGET 'http://localhost:9200/_search?q=hello+world'”的方式完成简单的检索,但Elasticsearch的信息检索功能很强大,其功能远远不止于此。信息检索时,可简单地使用基于Lucene的通用检索语法,也可以使用灵活的基于JSON格式的Query DSL(Domain Special Language)来构造各种检索请求。在检索表达式中,有时也可同时包含查询条件和过滤器,可以使用复合查询,可以改变查询结果的排序,也可以在Elasticsearch中使用脚本。需要说明的是,第2章中介绍的文档索引是对其进行检索的前提和基础。在处理字段、类型和查询时可以指定分析器。和Lucene类似,索引和检索时使用的分析器(是带有零个或多个过滤器的分词器,如中文分词工具)应该是一样的,否则可能导致检索失败。