ElasticSearch 简介及基本操作

简介

什么是ElasticSearch

ElasticSearch 简称 ES ,是基于Apache Lucene构建的开源搜索引擎,是当前最流行的企业级搜索引擎Lucene本身就可以被认为迄今为止性能最好的一款开源搜索引擎工具包,但是lucene的API相对复杂,需要深厚的搜索理论。很难集成到实际的应用中去。ES是采用java语言编写,提供了简单易用的RestFul API,开发者可以使用其简单的RestFul API,开发相关的搜索功能,从而避免lucene的复杂性

核心概念

索引

一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个商品数据的索引,一个订单数据的索引,还有一个用户数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。

映射

映射是定义一个文档和它所包含的字段如何被存储和索引的过程。在默认配置下,ES可以根据插入的数据自动地创建mapping,也可以手动创建mapping。 mapping中主要包括字段名、字段类型等

文档

文档是索引中存储的一条条数据。一条文档是一个可被索引的最小单元。ES中的文档采用了轻量级的JSON格式数据来表示。

基本操作

索引

  1. ES中的索引存在健康状态:green(健康)、yellow(索引可用,存在风险)、red(索引不可用)
  2. 默认ES在创建索引时会为索引创建1个备份索引和一个primary索引
创建

1.创建索引

PUT /索引名

⚠️注意

  • 默认ES在创建索引时会为索引创建1个备份索引和一个primary索引
  • 默认是yellow

2.创建索引 进行索引分片的配置

PUT /goods
{
  "settings": {
    "number_of_shards": 1, 
    "number_of_replicas": 0 
  }
}
  • 此时索引状态就是green

⚠️Notice:

ElasticSearch5.x以上版本使用text和keyword作为字符串类型取代之前版本的string类型。

  • 字符串 - text:用于全文索引,该类型的字段将通过分词器进行分词,最终用于构建索引
  • 字符串 - keyword:不分词,只能搜索该字段的完整的值,只用于 filtering

如果创建了索引但是没设置映射结果,然后插入了一条字符串类型的文档,字段将默认被同时映射成textkeyword类型

POST /test/_doc
{
  "name":"黄凯宇"
}

ElasticSearch将会为你默认创建映射

{
  "test" : {
    "mappings" : {
      "properties" : {
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}

基于这个映射你即可以在Filed字段上进行全文搜索, 也可以通过Filed.keyword字段实现不分词的关键词搜索及数据聚合.

查询
GET /_cat/indices?v
删除
DELETE /索引名
DELETE /*     #  *代表通配符,代表所有索引

映射

指定索引中字段名和字段类型,一般真实开发环境中都是手动创建映射,更加符合业务场景

创建
  • 字符串类型:keyword(关键字,关键字)、text(一段文本)
  • 数字类型: integer long
  • 小数类型:float double
  • 布尔类型:boolean
  • 日期类型:date
PUT /products
{
  "settings": {
    "number_of_replicas": 0,
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "id":{
        "type": "integer"
      },
      "title":{
        "type": "keyword"
      },
      "price":{
        "type": "double"
      },
      "create_at":{
        "type": "date"
      },
      "description":{
        "type": "text"
      }
    }
  }
}
  
查询

查询某个索引的映射

GET /索引名/_mapping

文档

添加

添加文档操作_—_手动指定 _id

POST /products/_doc/1
{
  "id":1,
  "title":"小浣熊",
  "price":0.5,
  "created_at":"2022-04-08",
  "description":"小浣熊真好吃"
}

自动生成_id

#添加文档操作 自动生成id  pD5UB4ABiB8dDekOnyy9
POST /products/_doc/
{
  "id":2,
  "title":"猪猪侠",
  "price":0.5,
  "created_at":"2022-04-08",
  "description":"5毛钱一包"
}
查看

基于id查询

GET /索引名/_doc/id
删除

基于id删除

DELETE /索引名/_doc/id
更新

删除原始文档 再重新添加(更新完就只剩更新的字段了)

PUT /索引名/_doc/id
{
   "字段名":"更新后值"
}

在原来的基础上更新文档

POST  /索引名/_doc/id/_update
{
	"doc":{
		"字段名":"更新后值"
	}
}
批量操作
  • 需要注意的是文档的内容不管多复杂都得在一行,不能换行

批量增加

POST /products/_doc/_bulk

{"index":{"_id":2}}
  {"id":2,"title":"泡面","price":4,"created_at":"2022-04-08","description":"泡面真难吃"}
{"index":{"_id":3}}
  {"id":3,"title":"玉米肠","price":5,"created_at":"2022-04-08","description":"玉米肠真好吃"}

批量 添加/更新/删除

POST /products/_doc/_bulk
{"index":{"_id":4}}
  {"id":4,"title":"沙拉","price":6,"created_at":"2022-04-09","description":"不错不错"}
{"update":{"_id":3}}
  {"doc":{"title":"玉米肠+蛋"}}
{"delete":{"_id":2}}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个开源的分布式搜索和分析引擎,它可以用于存储、搜索和分析大量的数据。以下是一些Elasticsearch基本操作: 1. 安装和启动Elasticsearch:首先,你需要从Elasticsearch官方网站下载和安装Elasticsearch。安装完成后,你可以使用命令行或者图形界面来启动Elasticsearch。 2. 创建索引:在Elasticsearch中,数据存储在索引中。你可以使用PUT请求来创建一个新的索引。例如,使用curl命令可以发送以下请求来创建一个名为"my_index"的索引: ``` curl -XPUT 'localhost:9200/my_index' ``` 3. 添加文档:一旦索引创建好了,你可以使用POST请求来向索引中添加文档。文档是以JSON格式表示的数据。以下是向名为"my_index"的索引添加一个文档的示例请求: ``` curl -XPOST 'localhost:9200/my_index/_doc' -d ' { "title": "Elasticsearch Basics", "content": "This is a basic introduction to Elasticsearch" }' ``` 4. 搜索文档:你可以使用GET请求来搜索索引中的文档。以下是一个搜索名为"my_index"的索引中包含关键字"elasticsearch"的文档的示例请求: ``` curl -XGET 'localhost:9200/my_index/_search?q=elasticsearch' ``` 5. 更新文档:使用POST请求可以更新索引中的文档。以下是更新名为"my_index"的索引中ID为1的文档的示例请求: ``` curl -XPOST 'localhost:9200/my_index/_doc/1/_update' -d ' { "doc": { "content": "This is an updated content" } }' ``` 6. 删除文档:使用DELETE请求可以删除索引中的文档。以下是删除名为"my_index"的索引中ID为1的文档的示例请求: ``` curl -XDELETE 'localhost:9200/my_index/_doc/1' ``` 这些是Elasticsearch的一些基本操作。你可以根据需要进一步探索和学习更多高级功能和API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值