elasticsearcg 执行搜索

执行搜索:

现在我们已经看奥一些基本的搜索参数,让我们进一步深入到查询DSL。

让我们首先看看返回的文档字段。

默认, 完整的JSON 文档白返回做我所有的搜索的一部分。

这是被称为source(_source字段在搜索hits).


如果我们不需要整个资源文档返回,我们有negligible只请求部分字段


这个例子显示如何返回两个字段,account_number and balance  在_source

GET /test/_search
{
  "query": { "match_all": {} },
  "_source": ["account_number", "balance"]
}

注意 上面的例子简单的减少了 _source field. 它仍旧只会返回一个字段命名为_source,但是只有account_number和balance是被包含的

如果你有一个SQL背景, 上面的类似SQL select from 字段列表。


现在让我们转到查询部分,此前,我们已经看到match_all查询是用于匹配所有的文档。

让我们介绍一个新的查询称为match query,可以被认为是一种基本的字段搜索查询。

This example returns the account numbered 20:


这个例子返回所有账户包含term "mill" 在地址列:

GET /bank/_search
{
  "query": { "match": { "address": "mill" } }
}

  "hits": [
      {
        "_index": "bank",
        "_type": "account",
        "_id": "472",
        "_score": 2.8050785,
        "_source": {
          "account_number": 472,
          "balance": 25571,
          "firstname": "Lee",
          "lastname": "Long",
          "age": 32,
          "gender": "F",
          "address": "288 Mill Street",
          "employer": "Comverges",
          "email": "leelong@comverges.com",
          "city": "Movico",
          "state": "MT"
        }
      }

这个例子返回所有账户包含term "mill" 或者"lane" 在address:


address 包含mill 或者lane

让我们介绍 bool(ean) query, bool query 允许我们来构成更小的查询到更大的查询使用布尔逻辑:


这个例子包含2个match 查询 和返回所有的账户包含"mill" 和"lane" 在address

GET /bank/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}

原文地址:https://www.cnblogs.com/hzcya1995/p/13349683.html