ElasticSearch记录

本文详细介绍ElasticSearch的安装、基本操作及索引管理,包括如何使用HTTP方法进行数据处理,索引创建、删除、查询及映射管理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ElasticSearch 是什么
二 怎么使用
1 安装ElasticSearch 和head插件,以及需要的依赖
①下载elasticSearch 官网下载地址
链接:https://pan.baidu.com/s/1G6vTU52iSIbChLIUX71-Eg
提取码:y7ri
② 下载head插件 git下载地址
链接:https://pan.baidu.com/s/12tNwXH1jqlCRvzoL0IyN7w
提取码:tlfr
安装下载node.js / grunt/ pathomjs
参考地址
配置完成之后
安装head插件 参考地址
最后注意启动地址
启动地址
http://localhost:9200/_plugin/head/
因为这是head插件集成到es中 启动地址是这个 访问该地址的时候只需要进入es的bin目录进行启动elasticsearch.bat 文件

三 语法使用规则(只讲http方法)

http 方法数据处理说明
postcreate新增一个没有id的资源
getread获取一个资源
putupdate更新一个资源,或者新增一个有id的资源(如果id不存在)
deletedelete删除一个资源

3.1 通用参数介绍
1 pretty
pretty=true //请求的返回值 是经过格式化后的json 数据
pretty=yaml //yaml格式

2 human
默认是false
true(更符合人类阅读的数据)

3 日期表达式
now 表示当前日期 或者 自己写日期后面添加||
y年 m月 w 周 d 天 h 小时 m 分钟 s 秒
+1h 增加1 小时
-1d 减少1天
/d 对某个单位四舍五入
now+1h 当前时间加上一小时
2015-01-01||+1d 1025年1月1日加上一天

4 响应过滤(filter_path)
指定返回值的字段 中间使用,分割
在这里插入图片描述
也可以使用* 通配符 匹配任何部分字段的名称
** 用来匹配不确定字段的名称
四 具体使用示例

  1. 创建库
    http://127.0.0.1:9200/secisland?pretty 在请求方法中选择put

在这里插入图片描述
创建了一个索引为secisland 的索引(按照前面的介绍索引相当于普通的数据库)
查询数据库状态
方法1 在浏览器地址直接输入 http://localhost:9200/_cat/indices?v
在这里插入图片描述
方法2 使用head插件
在这里插入图片描述
2. 插入数据(文档相当于原来数据库中的每一行的数据)
put http://localhost:9200/secisland/secilog/1/
参数
{“computer”:“secisland”,
“message”:“it is a good computer”
}
在这里插入图片描述
修改文档
在这里插入图片描述
查询
在这里插入图片描述

删除
在这里插入图片描述
删除库
delete http://localhost:9200/secisland/

  1. 索引
    2.1索引管理
    2.1.1 创建索引
    put http://ip:+端口/+索引的名字/
    2.1.2删除索引
    delete http://ip:+端口/+索引的名字/
    使用_all 或者 * 可以获取对应的全部的索引
    2.1.3 获取索引
    get http://ip:+端口/+索引的名字/
    获取该索引的详细信息包括一些配置信息
    对结果进行过滤
    下划线+字段的名字 表示显示的结果为哪些 多个字段之间使用 ,分割
    http://localhost:9200/secisland/_aliases,_mappings/
    在这里插入图片描述
    2.1.4 打开/关闭索引
    /索引名/_close 关闭
    /索引名/_open 打开
    如果指向了不存在的索引会抛出错误 可以使用 ignore_unavailable=true 不显示异常
    禁止使用关闭索引功能
    settingscluster.indices.close.enable false 默认为true
    2.2 索引映射管理
    2.2.1 增加映射
    允许向索引(index)添加文档类型(type),或者向文档类型中添加字段(field)
    例子1 向索引secisland 添加文档类型为user 包含字段name 字段类型为字符串
    在这里插入图片描述
    例子2 向已经存在的索引secisland 文档类型为log 添加新的字段user_name 字段类型为字符串
    在这里插入图片描述
    1 向多个索引设置映射
    可以一次向多个索引添加文档类型
    put http://localhost:9200/_all/_mapping/wendang/ 向所有索引添加wendang 字段为 ziduan
    在这里插入图片描述
    2 不同类型之间的冲突
    在同一个索引的不同类型中,相同名字的字段必须有相同的映射,因为他们呢内部是在同一个领域内,所以更新的时候需要指定update_all_types 参数,这个时候会更新所有统一索引同名称的映射参数
    例如
    修改映射的操作如下
    在这里插入图片描述
    报错信息显示 需要修改全部
    所以使用update_all_types参数 (我使用的2.3版本的暂时报错,这个解决了补上)

2.2.2 获取映射
host:port/{index}/_mapping/{type}/
其中{index}和{type}可以接受,
get http://localhost:9200/_all/_mapping/
在这里插入图片描述
2.2.3 判断类型是否存在
检查索引或文档类型是否存在
head http://localhost:9200/secisland/log/
存在返回200 不存在返回404
2.3 索引别名
在这里插入图片描述
删除别名
{
“actions”: [
{
“remove”: {
“index”: “secisland”,
“alias”: “alias1”
}
}
]
}
修改别名 可以使用先删除再添加的方法
{
“actions”: [
{
“remove”: {
“index”: “secisland”,
“alias”: “alias1”
}
},
{
“add”: {
“index”: “secisland”,
“alias”: “alias2”
}
}
]
}
一个别名关联多个索引
{
“actions”: [
{
“add”: {
“index”: “index1”,
“alias”: “alias1”
}
},
{
“add”: {
“index”: “index2”,
“alias”: “alias1”
}
}
]
}

或者
{
“actions”: [
{
“add”: {
“indices”: [“index1”,“index2”],
“alias”: “alias1”
}
}
]
}

1 过滤索引别名
在这里插入图片描述

  1. 映射
  2. 搜索
  3. 聚合
  4. 集群管理
  5. 索引分词器
  6. 高级配置
  7. 告警、监控和权限管理
  8. elk应用
### 如何在 Elasticsearch 中添加文档 要在 Elasticsearch 中添加文档,可以使用其 RESTful API 或者通过客户端库(如 Python 的 `elasticsearch-py`)。以下是详细的说明: #### 使用 RESTful API 添加文档 可以通过 HTTP POST 请求将 JSON 数据发送到指定索引下的 `_doc` 路径。例如,假设有一个名为 `my_index` 的索引,并希望向其中添加一条记录,则请求如下所示[^2]: ```bash POST http://localhost:9200/my_index/_doc/1 Content-Type: application/json { "title": "Elasticsearch Basics", "content": "Learn how to use Elasticsearch effectively." } ``` 上述命令会创建一个新的文档并将其存储在 `my_index` 索引中。 #### 使用 Python 客户端添加文档 如果更倾向于编程方式操作 Elasticsearch,可以利用官方支持的 Python 库 `elasticsearch-py`。安装该库后,可通过以下代码片段完成相同的操作: ```python from elasticsearch import Elasticsearch es = Elasticsearch([{'host': 'localhost', 'port': 9200}]) document = { "title": "Elasticsearch Basics", "content": "Learn how to use Elasticsearch effectively." } response = es.index(index="my_index", id=1, document=document) print(response['result']) ``` 此脚本初始化了一个连接至本地运行实例的 Elasticsearch 对象,并调用了 `.index()` 方法来插入新数据条目。 #### 注意事项 当尝试解析或处理查询时遇到错误消息 `{ "valid": false, "error": "org.elasticsearch.common.ParsingException: no [query] registered for [mach]" }` ,这通常表明存在语法问题或者不被识别的关键字存在于所提交的查询之中[^1] 。因此,在构建任何类型的请求之前,请仔细验证所有的参数名称及其对应的值是否正确无误。 另外值得注意的是,尽管本文未具体提及有关冷热架构设置的内容,但在大规模生产环境中合理规划不同角色节点(比如专用暖节点)对于优化性能至关重要[^4]。 最后提醒一下,虽然这里展示了基本方法论,实际应用过程中可能还需要考虑诸如批量导入、冲突解决策略等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值