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
相关推荐
武子康1 小时前
大数据-258 离线数仓 - Griffin架构 配置安装 Livy 架构设计 解压配置 Hadoop Hive
java·大数据·数据仓库·hive·hadoop·架构
lucky_syq3 小时前
Flume和Kafka的区别?
大数据·kafka·flume
AI_NEW_COME3 小时前
构建全方位大健康零售帮助中心:提升服务与体验
大数据·人工智能
VinciYan3 小时前
基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
python·ubuntu·docker·自动化·jenkins·.net·运维开发
it噩梦3 小时前
es 中 terms set 使用
大数据·elasticsearch
中科岩创4 小时前
中科岩创边坡自动化监测解决方案
大数据·网络·物联网
DolphinScheduler社区5 小时前
作业帮基于 Apache DolphinScheduler 3_0_0 的缺陷修复与优化
大数据
SeaTunnel5 小时前
京东科技基于 Apache SeaTunnel 复杂场景适配 #数据集成
大数据
喝醉酒的小白6 小时前
Elasticsearch 配置文件
大数据·elasticsearch·搜索引擎
一只敲代码的猪6 小时前
Llama 3 模型系列解析(一)
大数据·python·llama