elasticsearch基本操作

本文介绍了Elasticsearch的节点信息,包括版本、集群名称等。展示了如何查看节点、创建索引、添加及更新文档,并详细解释了响应信息,如文档ID、版本号、分片信息。还讨论了文本和关键字字段类型的差异及其用途。
摘要由CSDN通过智能技术生成

elasticsearch 下面参数详细解释

java 搜索查询看官方文档

https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/8.8/connecting.html#_your_first_request
{
  "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"
}
这个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版本,以及集群名称等情况。
查看节点
GET /_cat/nodes
查看索引
GET /_cat/indices
创建索引
PUT /megacorp
添加文档
PUT megacorp/_doc/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}
在 Elasticsearch 8.x 版本中,PUT 方法直接对文档 ID 进行索引操作已经被移除,不再支持这种用法。
测试已不支持
POST /megacorp/employee/_doc/2

创建后展示信息
在这里插入图片描述

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

获取es文档

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"
    ]
  }
}

更新文档方式一

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

更新返回值

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

更新文档方式一

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

搜索

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
        }
      }
    ]
  }
}

获取索引文档数据结构

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 可以这样:

PUT /megacorp/_mapping
{
 "properties": {
    "first_name": {
      "type": "text"
    }
  }
}

删除索引

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

删除索引

DELETE /megacorp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值