大数据搜索与挖掘及可视化管理方案 :Elastic Stack 5:Elasticsearch、Logstash、Kibana、X-Pack、Beats (第3版)
上QQ阅读APP看书,第一时间看更新

第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. Elasticsearch provides a full Query DSL based on JSON to define queries. Query clauses behave differently depending on whether they are used in query context or filter context.The aggregations framework help sprovide aggregated data based on a search query.It is based on simple building blocks called aggregations, that can be composed in order to build complex summaries of the data.An aggregation can be seen as a unit-of-work that builds analytic information over a set of documents.The context of the execution defines what this document set is.”——http://www.elastic.co

在Elasticsearch的基于RESTful的接口方式中,完成信息检索功能的关键词是_search,通过POST的方式发送到Elasticsearch,其后跟“? q=查询词”等。其形式化表示方式是:

    http://{ip_address}:{port}/{index}/{type}/_search? q=查询词

例如,可以以“curl-XGET'http://localhost:9200/_search? q=hello+world'”的方式完成简单的检索,但Elasticsearch的信息检索功能很强大,其功能远远不止于此。信息检索时,可简单地使用基于Lucene的通用检索语法,也可以使用更加灵活的基于JSON格式的Query DSL(Domain Special Language)来构造各种检索请求,同时可以使用Aggregations来实现聚合。在一般的检索表达式中,有时也可同时包含查询条件和过滤器。可以使用复合查询,可以改变查询结果的排序,也可以在Elasticsearch中使用scripts脚本。需要说明的是,第2章中介绍的文档索引是对其进行检索的前提和基础。在处理字段、类型和查询时可以指定分析器。和Lucene类似,索引和检索时使用的分析器(带有零个或多个过滤器的分析器,如中文分词工具)应该是一样的,否则可能导致检索失败。