ElasticSearch查询

Posted 靖锅锅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch查询相关的知识,希望对你有一定的参考价值。

1. 准备测试数据,将数据下载到本地:

https://github.com/elastic/el...

数据结构:
{ 
    "account_number": 0, 
    "balance": 16623, 
    "firstname": "Bradshaw", 
    "lastname": "Mckenzie", 
    "age": 29, 
    "gender": "F", 
    "address": "244 Columbus Place", 
    "employer": "Euron", 
    "email": "bradshawmckenzie@euron.com", 
    "city": "Hobucken", 
    "state": "CO"
}

2. 导入数据到es

进入到accounts.json文件的目录执行导入命令,该命令会自动创建bank索引
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json" 

curl "localhost:9200/_cat/indices?v=true"

3. 查询操作

# 查询bank索引所有数据,默认显示10条
GET /bank/_search

# 分页查询并根据account_number降序
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "account_number": {
        "order": "desc"
      }
    }
  ],
  "from": 10,
  "size": 1
}

# 查询address包含mill或lane
GET /bank/_search
{
  "query": {
    "match": {
      "address": "mill lane"
    }
  }
}

# 仅匹配包含mill lane的内容
GET /bank/_search
{
  "query": {
    "match_phrase": {
      "address": "mill lane"
    }
  }
}

#使用bool来构造复杂查询,age为40但state不为id
GET /bank/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "age": "40"
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "state": "ID"
          }
        }
      ]
    }
  }
}

# 使用filter过滤数据
GET /bank/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {}
        }
      ],
      "filter": {
        "range": {
          "balance": {
            "gte": 20000,
            "lte": 30000
          }
        }
      }
    }
  }
}

# 聚合查询
GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_gender": {
      "terms": {
        "field": "gender.keyword"
      }
    }
  }
}

#嵌套聚合查询并排序
GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "city.keyword",
        "order": {
          "average_balance": "desc"
        }
      },
      "aggs": {
        "average_balance": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}

以上是关于ElasticSearch查询的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch笔记九之优化

ElasticSearch--请求体查询

Elasticsearch--搜索

小烨收藏ElasticSearch权威指南-请求体查询

Elasticsearch:运用 Elasticsearch 查找类似文档:more_like_this

Elasticsearch:运用 Elasticsearch 查找类似文档:more_like_this