elasticsearch基本操作

elasticsearch 下面参数详细解释

java 搜索查询看官方文档

bash 复制代码
https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/8.8/connecting.html#_your_first_request
bash 复制代码
{
  "name" : "Tom Foster",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "x.x.x",
    "build_hash" : "1f1a3eee09505e036106146dc1949dc5dc87",
    "build_timestamp" : "xxxx-11-18T22:40:03Z",
    "build_snapshot" : false,
    "lucene_version" : "x.x.x"
  },
  "tagline" : "You Know, for Search"
}
bash 复制代码
这个JSON表示Elasticsearch节点的响应,包含了一些Elasticsearch集群和节点自身的信息。主要参数说明如下:
- name:节点的名称,默认为随机分配的名称。
- cluster_name:Elasticsearch集群的名称,默认为"elasticsearch"。
- version:节点的Elasticsearch版本信息,包含版本号、build hash值、构建时间等信息。
- number:Elasticsearch的具体版本号。
- build_hash:构建该版本Elasticsearch代码的commit hash值。
- build_timestamp:构建的时间戳。
- build_snapshot:是否为快照build版本。
- lucene_version:该Elasticsearch版本所使用的Lucene版本号。
- tagline:Elasticsearch的tagline,可以看作一个标语或口号。默认是"You Know, for Search"。
所以这些信息可以让我们很清楚地了解节点的Elasticsearch版本,以及集群名称等情况。
bash 复制代码
查看节点
GET /_cat/nodes
查看索引
GET /_cat/indices
bash 复制代码
创建索引
PUT /megacorp
添加文档
PUT megacorp/_doc/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}
bash 复制代码
在 Elasticsearch 8.x 版本中,PUT 方法直接对文档 ID 进行索引操作已经被移除,不再支持这种用法。
测试已不支持
POST /megacorp/employee/_doc/2

创建后展示信息

bash 复制代码
{
  "_index": "megacorp",
  "_id": "1",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "_seq_no": 0,
  "_primary_term": 1
}
bash 复制代码
这个JSON对象包含了Elasticsearch执行索引文档操作后的响应信息,主要字段说明如下:
- _index: 文档被索引到的索引名。
- _id: 文档的ID。
- _version: 文档的版本号,文档被修改时版本号会+1。
- result: 操作结果,这里是created表示文档被创建。
- _shards: 分片信息。total为总分片数,successful为操作成功的分片数,failed为失败的分片数。
- _seq_no: 序列号,代表操作顺序。
- _primary_term: 主分片的任期(term)号,主分片发生变更时会增加。

获取es文档

bash 复制代码
GET /megacorp/_doc/1
结果
{
  "_index": "megacorp",
  "_id": "1",
  "_version": 1,
  "_seq_no": 0,
  "_primary_term": 1,
  "found": true,
  "_source": {
    "first_name": "John",
    "last_name": "Smith",
    "age": 25,
    "about": "I love to go rock climbing",
    "interests": [
      "sports",
      "music"
    ]
  }
}

更新文档方式一

bash 复制代码
POST /megacorp/_update/1
{
  "doc": {
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [  "music" ]  
  }
}

更新返回值

bash 复制代码
{
  "_index": "megacorp",
  "_id": "1",
  "_version": 2,
  "result": "updated",
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "_seq_no": 1,
  "_primary_term": 1
}

更新文档方式一

bash 复制代码
POST /megacorp/_update_by_query
{
  "script": {
    "source": "ctx._source.age += params.increment",
    "params": {
      "increment": 1
    }
  },
  "query": {
    "match": {
      "first_name": "John"
    }
  }
}

搜索

bash 复制代码
GET /megacorp/_search
返回
{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "megacorp",
        "_id": "1",
        "_score": 1,
        "_source": {
          "about": "I love to go rock climbing",
          "last_name": "Smith",
          "interests": [
            "music"
          ],
          "first_name": "John",
          "age": 30
        }
      }
    ]
  }
}

获取索引文档数据结构

bash 复制代码
GET /megacorp/_mapping
返回
{
  "megacorp": {
    "mappings": {
      "properties": {
        "about": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "age": {
          "type": "long"
        },
        "first_name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "interests": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "last_name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
  }
}

修改文档类型

要修改 Elasticsearch 中已存在索引的字段映射(mapping),可以通过 PUT 请求发送修改后的映射定义。

例如,要将索引 megacorp 中的 first_name 字段类型从改为 text 可以这样:

bash 复制代码
PUT /megacorp/_mapping
{
 "properties": {
    "first_name": {
      "type": "text"
    }
  }
}

删除索引

bash 复制代码
    "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
在 Elasticsearch 中,text 和 keyword 是两种不同的字段类型(field types)。
text 类型:
- 它是全文字段,用于全文搜索。text 字段会进行分词,会分析字符串,转换成词的组合,建立索引。
- 支持模糊匹配、Phrase查询等全文搜索语法。
- 但不支持聚合(aggregation)操作,因为经过分词后进行了拆分。
- 适用于长文本、文章内容等需要全文搜索的字段。
keyword 类型:
- 它是精确值字段,会作为一个整体进行索引,不进行分词和分析。
- 支持聚合,可以用于聚合统计、排序等操作。
- 但不支持全文搜索的语法,只能进行精确匹配查询。
- 适用于字段的值是明确的关键词,如状态、品类等属性字段。
总结:
- text 用于全文搜索, Keyword 用于聚合和过滤。
- text 可以模糊匹配,keyword 只能精确匹配。
- text 会进行分词,keyword 作为一个整体索引。
选择合适的字段类型对索引和查询效果都很重要。 

删除索引

bash 复制代码
DELETE /megacorp
相关推荐
py小王子10 分钟前
dy评论数据爬取实战:基于DrissionPage的自动化采集方案
大数据·开发语言·python·毕业设计
龙山云仓44 分钟前
MES系统超融合架构
大数据·数据库·人工智能·sql·机器学习·架构·全文检索
淡忘_cx1 小时前
使用Jenkins自动化部署vue项目(2.528.2版本)
vue.js·自动化·jenkins
无忧智库1 小时前
某市“十五五“知识产权大数据监管平台与全链条保护系统建设方案深度解读(WORD)
大数据·人工智能
晚风_END1 小时前
Linux|操作系统|elasticdump的二进制方式部署
运维·服务器·开发语言·数据库·jenkins·数据库开发·数据库架构
综合热讯1 小时前
股票融资融券交易时间限制一览与制度说明
大数据·人工智能·区块链
华农DrLai1 小时前
Spark SQL Catalyst 优化器详解
大数据·hive·sql·flink·spark
Pluchon2 小时前
硅基计划4.0 算法 简单模拟实现位图&布隆过滤器
java·大数据·开发语言·数据结构·算法·哈希算法
岁岁种桃花儿2 小时前
Flink从入门到上天系列第一篇:搭建第一个Flink程序
大数据·linux·flink·数据同步
历程里程碑2 小时前
普通数组-----除了自身以外数组的乘积
大数据·javascript·python·算法·elasticsearch·搜索引擎·flask