OpenSearch 初见
好的,因为选型问题,还要在来一遍ES。但是开源的已经是OpenSearch了,所以…
官方文档在这里,可以查找到本笔记的来源。并且其中有详尽的安装文档。
简介
OpenSearch 将数据组织成_索引_。每个索引都是 JSON_文档_的集合。单下划线前缀的,是opensearch自己添加的一些元素。
OpenSearch 将索引拆分为分_片_,以便在集群中的节点之间均匀分布。
一个好的经验法则是将分片大小保持在 10-50 GB 之间。
您使用 REST API 与 OpenSearch 集群进行交互。
查询关键词
match
全文索引。会分词,模糊查询。默认分词逻辑中,单词为一组,数字算作单词一部分。中文单字为一组
term
精确查询。不会拆词
terms
多值匹配。同term查询,但是可以进行列表级别的匹配 约等于 mysql 的 in
range
范围查询。
prefix
前缀查询。
wildcard
fuzzy
must、must not、should
match all
match_phrase
multi_match
filter 和 must
聚合查询
解析器
- 只有text类型字段才能在mapping中设置analyzer
use note
查询使用特殊计算结果进行排序
1
2
3
4
5
6
7
8
9
"sort": {
"_script": {
"type": "number",
"script": {
"inline": "doc['views'].value + doc['usage'].value * 2"
},
"order": "desc"
}
}
用特殊脚本更新文档中的值
1
2
3
4
5
6
{
"script": {
"source": "ctx._source.views+=0;ctx._source.usage+=0;",
"lang": "painless"
}
}
创建索引时,自定义analyzer,进一步的,可以自定义同义词库,也可以自行组装解析器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"settings": {
"analysis": {
"analyzer": {
"whitespace_synonymous": {
"tokenizer": "ik_smart",
"filter": [
"synonymous_filter"
]
}
},
"filter": {
"synonymous_filter": {
"type": "synonym",
"expand": true,
"updateable": true, // 支持动态更新
"synonyms_path": "synonyms_file.txt"
}
}
}
}
重建索引,将索引source的文档转移到dest中,转换时,运行script的脚本
1
2
3
4
5
6
7
8
9
10
11
12
{
"source": {
"index": "datasets2"
},
"dest": {
"index": "datasets4"
},
"script": {
"lang":"painless",
"source":"ctx._source.views=0;ctx._source.usage=0;"
}
}
opensearch内置类型
别名(Alias):为现有字段提供一个额外的名称。
二进制(Binary):以Base64编码的二进制值。
数值型(Numeric):包括多种数值类型,如byte、double、float、half_float、integer、long、unsigned_long、scaled_float、short。
布尔(Boolean):表示布尔值。
日期(Date):以毫秒存储的日期。
IP地址(IP):IPv4或IPv6格式的IP地址。
范围(Range):表示值的范围,如integer_range、long_range、double_range、float_range、date_range、ip_range。
对象(Object):一个JSON对象。
嵌套(Nested):当数组中的对象需要独立索引时使用。
字符串(String):包括关键字(keyword)和文本(text),前者不进行分析,后者进行分析。
自动完成(Autocomplete):通过完成建议器提供自动完成功能。
地理位置(Geographic):包括地理点(geo_point)和地理形状(geo_shape)。
排名(Rank):用于文档相关性评分的提升或降低。
k-NN向量(k-NN Vector):允许将k-NN向量索引到OpenSearch中,并进行各种类型的k-NN搜索。
使用opensearch-operator部署
步骤
TODO
节点内容
Coordinators (协调节点):
Nodes (节点):
Masters (主节点):
NodePools (节点池):
Dashboards (仪表板):
ConfMgmt (配置管理):
General (通用配置):