下载安装

下载

您可以从Elasticsearch官方网站下载适用于您操作系统的安装包:https://www.elastic.co/downloads/elasticsearch

安装步骤

请按照以下步骤安装Elasticsearch:

  1. 解压下载的安装包到您选择的目录。

  2. 进入解压后的目录。

  3. 启动Elasticsearch:

    • 在Linux和Mac上,执行以下命令:

      bin/elasticsearch
      
    • 在Windows上,执行以下命令:

      bin\elasticsearch.bat
      

验证安装

要验证Elasticsearch是否正确安装并运行,请打开浏览器并访问:http://localhost:9200

如果成功安装,您将看到类似以下的响应:

{
  "name" : "your-node-name",
  "cluster_name" : "your-cluster-name",
  "cluster_uuid" : "your-cluster-uuid",
  "version" : {
    "number" : "7.14.0",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "dd5a0a2acaa2045ff9624f3729fc8a6f40835aa1",
    "build_date" : "2021-07-29T20:49:32.864135063Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

配置

Elasticsearch的配置文件位于config/elasticsearch.yml。您可以根据需要修改配置以满足特定的需求。

以下是一些常见的配置选项:

  • cluster.name:集群的名称。
  • node.name:节点的名称。
  • network.host:绑定的网络接口。
  • http.port:HTTP API监听的端口。
  • path.data:数据存储的路径。
  • path.logs:日志存储的路径。

您可以编辑config/elasticsearch.yml文件并重启Elasticsearch使配置生效。

数据索引

创建索引

在Elasticsearch中,索引类似于关系数据库中的数据库。本节将介绍如何创建索引。

您可以使用Elasticsearch的REST API创建索引。以下是一个创建名为my_index的索引的示例:

PUT /my_index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "content": { "type": "text" }
    }
  }
}

上述示例中,我们创建了一个名为my_index的索引,并指定了分片数为1,副本数为0。还定义了文档中的字段及其类型。

添加文档

要向索引中添加文档,使用以下API:

POST /my_index/_doc
{
  "title": "Elasticsearch是什么",
  "content": "Elasticsearch是一个分布式搜索和分析引擎。"
}

上述示例中,我们向my_index索引添加了一篇文档,包含标题和内容字段。

获取文档

要获取特定文档的详细信息,使用以下API:

GET /my_index/_doc/{document_id}

{document_id}替换为实际的文档ID。

更新文档

要更新文档,使用以下API:

POST /my_index/_update/{document_id}
{
  "doc": {
    "content": "Elasticsearch是一个高性能、可扩展的搜索引擎。"
  }
}

上述示例中,我们更新了my_index索引中指定ID的文档的内容字段。

删除文档

要删除文档,使用以下API:

DELETE /my_index/_doc/{document_id}

{document_id}替换为实际的文档ID。

数据检索

简单检索

要执行简单的文档检索,使用以下API:

GET /my_index/_search
{
  "query": {
    "match": {
      "content": "搜索引擎"
    }
  }
}

上述示例中,我们在my_index索引中搜索包含关键词"搜索引擎"的文档。

过滤器和排序

要对搜索结果进行过滤和排序,可以使用过滤器和排序参数。以下是一个示例:

GET /my_index/_search
{
  "query": {
    "bool": {
      "must": { "match": { "content": "搜索引擎" } },
      "filter": { "range": { "date": { "gte": "2022-01-01" } } }
    }
  },
  "sort": [
    { "date": "asc" }
  ]
}

上述示例中,我们使用过滤器将搜索结果限制为指定日期之后的文档,并按日期升序排序。

聚合分析

Elasticsearch的聚合功能可以用于执行各种数据分析操作。本节将介绍一些常见的聚合操作。

以下是一个示例,计算my_index索引中不同分类的文档数:

GET /my_index/_search
{
  "size": 0,
  "aggs": {
    "categories": {
      "terms": {
        "field": "category.keyword",
        "size": 10
      }
    }
  }
}

上述示例中,我们执行了一个聚合操作,按照分类字段进行分组,并计算每个分类的文档数。聚合结果中只返回前10个分类。

其他聚合类型

除了terms聚合,Elasticsearch还提供了许多其他聚合类型,如平均值、最大值、最小值、汇总等。

以下是一些其他聚合类型的示例:

  • 平均值聚合:

    GET /my_index/_search
    {
      "size": 0,
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
    

    上述示例中,我们计算了my_index索引中价格字段的平均值。

  • 最大值聚合:

    GET /my_index/_search
    {
      "size": 0,
      "aggs": {
        "max_price": {
          "max": {
            "field": "price"
          }
        }
      }
    }
    

    上述示例中,我们计算了my_index索引中价格字段的最大值。

  • 汇总聚合:

    GET /my_index/_search
    {
      "size": 0,
      "aggs": {
        "summary_stats": {
          "stats": {
            "field": "price"
          }
        }
      }
    }
    

    上述示例中,我们计算了my_index索引中价格字段的汇总统计信息,包括最小值、最大值、平均值、总和和文档数。