有名的网站制作公司,教做游戏的网站,做拍拍拍拍网站,长春市城建网站1.别名使用
1#xff09;别名作用
在开发中#xff0c;随着业务需求的迭代#xff0c;较⽼的业务逻辑就要⾯临更新甚⾄是重构#xff0c;⽽对于es来说#xff0c;为了 适应新的业务逻辑#xff0c;可能就要对原有的索引做⼀些修改#xff0c;⽐如对某些字段做调整别名作用
在开发中随着业务需求的迭代较⽼的业务逻辑就要⾯临更新甚⾄是重构⽽对于es来说为了 适应新的业务逻辑可能就要对原有的索引做⼀些修改⽐如对某些字段做调整甚⾄是重建索 引。⽽做这些操作的时候可能会对业务造成影响甚⾄是停机调整等问题。由此es提供了索引 别名来解决这些问题。 索引别名就像⼀个快捷⽅式或是软连接可以指向⼀个或多个索引也可 以给任意⼀个需要索引名的API来使⽤。别名的应⽤为程序提供了极⼤地灵活性
2别名使用
查询
GET /_alias创建别名
POST /_aliases
{actions: [{add: {index: my_data_index,alias: current_data}}]
}删除别名
POST /_aliases
{actions: [{remove: {index: my_data_index,alias: current_data}}]
}2.重建索引
在 Elasticsearch 中重建索引是一项重要的操作通常用于更新或优化现有索引。以下是有关如何执行重建索引的一些建议和步骤
1)备份数据
在执行重建索引之前确保你有原始索引的备份。这是因为重建索引会创建一个新的索引然后将数据从旧索引复制到新索引。如果出现问题你可以回滚到原始索引。
2)创建新索引
首先你需要创建一个新的索引用于存储重新索引后的数据。你可以使用 Elasticsearch 的索引模板和设置来定义新索引的配置确保它符合你的需求。
PUT /new_index
{settings: {number_of_shards: 5,number_of_replicas: 1},mappings: {_doc: {properties: {field1: { type: text },field2: { type: keyword }}}}
}3)执行重建
使用 Elasticsearch 的 Reindex API这是一种安全的方法它允许你从旧索引到新索引复制数据并提供了一些高级选项来处理数据转换和过滤等任务。
POST /_reindex
{source: {index: old_index},dest: {index: new_index}
}使用 Logstash 或其他 ETL 工具如果你有复杂的数据转换需求可以考虑使用 Logstash 或其他 ETLExtract, Transform, Load工具来从旧索引导出数据并将其导入新索引
4)测试和验证
在执行重建操作后务必进行测试和验证以确保新索引中的数据与旧索引中的数据一致。你可以执行一些查询和聚合操作以验证数据的准确性。
5)更新别名
一旦你验证了新索引中的数据可以更新别名将其指向新索引以便应用程序可以开始使用新索引中的数据。
POST /_aliases
{actions: [{remove: {index: old_index,alias: my_alias}},{add: {index: new_index,alias: my_alias}}]
}6)清理旧索引
一旦你确认新索引正常工作可以考虑删除或归档旧索引以释放磁盘空间并减轻集群负载。
3.refresh操作
在 Elasticsearch 中refresh 操作用于使新索引数据在搜索前立即可见。默认情况下Elasticsearch 具有自动刷新机制索引每秒自动刷新一次以使新的文档和更改对搜索可见。
修改默认更新时间(默认时间是1s-1为关闭)
PUT /star/_settings
{index: {refresh_interval: 5s}
}有时你可能需要手动执行 refresh 操作以确保最新的数据立即可用。
POST /my_index/_refresh4.es高亮查询
在执行搜索查询时你可以使用 highlight 参数来请求高亮信息。以下是一个简单的示例
1高亮查询
GET /my_index/_search
{query: {match: {content: 关键词}},highlight: {fields: {content: {} // 高亮的字段}}
}在上面的示例中我们执行了一个简单的全文搜索查询目标是 content 字段中包含关键词 “关键词” 的文档。高亮信息将包含在响应中。
2解析高亮结果
在查询结果中你将看到一个名为 highlight 的部分它包含了高亮信息。你可以从中提取高亮的文本以及它们的位置。
hits: {total: 3,hits: [{_source: {content: 这是包含关键词的文本。},highlight: {content: [这是包含 em关键词/em 的文本。]}}]
}3自定义高亮样式
默认情况下高亮文本使用 标签标记但你可以根据需要自定义高亮的样式。你可以在查询中使用 pre_tags 和 post_tags 参数定义前缀和后缀标签。
highlight: {fields: {content: {}},pre_tags: [span classhighlight],post_tags: [/span]
}4.es查询建议
Elasticsearch 提供了几种不同类型的查询建议器包括 Term Suggester词语建议器、Phrase Suggester短语建议器和 Completion Suggester自动完成建议器。让我分别解释它们的作用和用法
1Term Suggester词语建议器
作用Term Suggester 用于纠正拼写错误提供与用户输入的单个词语最接近的建议。 用法你可以在查询请求中使用 Term Suggester 来提供词语级别的建议。它通常用于搜索引擎的搜索框以帮助用户纠正拼写错误并提供相关的建议。 示例
POST /my_index/_search
{suggest: {my-suggestion: {text: applle,term: {field: product_name}}}
}2Phrase Suggester短语建议器
作用Phrase Suggester 用于提供纠正的短语或建议而不仅仅是单个词。 用法你可以在查询请求中使用 Phrase Suggester 来提供短语级别的建议。它通常用于搜索引擎的搜索框以帮助用户在纠正拼写错误的同时提供整个查询短语的建议。 示例
POST /my_index/_search
{suggest: {my-suggestion: {text: red bbaloon,phrase: {field: product_name}}}
}3Completion Suggester自动完成建议器
作用Completion Suggester 用于实现自动完成搜索根据用户输入的一部分提供建议。 用法通常在搜索框中当用户键入查询的一部分时Completion Suggester 提供可能的建议以帮助用户更快地完成输入。 示例
POST /my_index/_search
{suggest: {my-suggestion: {prefix: app,completion: {field: product_name.suggest}}}
}请注意对于 Completion Suggester通常需要在索引映射中定义一个专门的 “completion” 字段以便支持自动完成建议。