跳至正文
Wener Notes

OpenSearch

约 3 分钟阅读
Portcomponent
443Dashboards in AWS
5601Dashboards
9200REST API
9250Cross-cluster search
9300Node communication and transport
9600Performance Analyzer
bash
# 单节点
docker run --it --rm \
  -p 9200:9200 -p 9600:9600 \
  -e "discovery.type=single-node" \
  opensearchproject/opensearch:latest

# /usr/share/opensearch/config/opensearch.yml
# 开发环境 DISABLE_INSTALL_DEMO_CONFIG=true DISABLE_SECURITY_PLUGIN=true discovery.type=single-node
# -Xmx at least 50% of system RAM
docker run --it --rm \
  -p 9200:9200 -p 9600:9600 \
  -e cluster.name=opensearch-cluster \
  -e node.name=opensearch-node1 \
  -e discovery.seed_hosts=opensearch-node1 \
  -e cluster.initial_cluster_manager_nodes=opensearch-node1 \
  -e bootstrap.memory_lock=true \
  -e "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" \
  -e network.host=0.0.0.0 \
  -e DISABLE_INSTALL_DEMO_CONFIG=true \
  -v $PWD/data:/usr/share/opensearch/data \
  --hostname opensearch-node1 \
  --name opensearch opensearchproject/opensearch

# /usr/share/opensearch-dashboards/config/opensearch_dashboards.yml
# 开发环境 DISABLE_SECURITY_DASHBOARDS_PLUGIN=true
docker run --rm -it \
  -p 5601:5601 \
  -e 'OPENSEARCH_HOSTS=["http://opensearch-node1:9200"]' \
  --name opensearch-dashboards opensearchproject/opensearch-dashboards
bash
# 插件列表
bin/opensearch-plugin list

# --batch 忽略询问
# bin/opensearch-plugin install <plugin-name>
# bin/opensearch-plugin install <zip-file>
# bin/opensearch-plugin install <groupId>:<artifactId>:<version>
  • Available plugins
  • bundled
    • alerting
    • anomaly-detection
    • asynchronous-search
    • cross-cluster-replication
    • notebooks
    • reports-scheduler
    • geospatial
    • index-management
    • job-scheduler
    • knn
    • ml
      • tribuo.org
      • K-means
      • Linear regression
      • RCF - Random Cut Forest
      • RCFSummarize
      • Localization
      • Logistic regression
    • observability
    • performance-analyzer
    • security
    • sql
  • 可安装
    • analysis-icu
    • ingest-attachment
    • mapper-annotated-text
    • mapper-murmur3
    • mapper-size
    • repository-s3
    • store-smb
    • transport-nio

Notes

  • REST 公共参数
    • human=true
    • pretty=true
    • Content-Type - 支持 json, yaml, cbor
    • error_trace=true
  • Endpoints
    • /_cat/nodes?v
    • /_cat/plugins?v
    • /_cat/aliases?v
    • /<index-name>/_search?q=wind
    • /_cluster/settings?include_defaults=true
    • DELETE /<index-name>/_doc/<document-id>
    • POST _aliases - 别名
    • POST _index_template - 索引模板
    • PUT _data_stream/<index>
    • _reindex - 重新索引
    • <index_name>/_update_by_query
    • _search/template
  • Data streams
    • 用于持续的时序数据,旧数据不变
  • mapping
    • schema 概念 - 默认动态
    • 可手动指定 mapping
    • 支持类型: null, boolean, float, double, integer, object, array, text, keyword, date detection string, numeric detection string
  • 聚合
    • 指标
      • 单值: sum, min, max, avg, cardinality, value_count
      • 多值: stats, extended_stats, matrix_stats, percentile, percentile_ranks, geo_bound, top_hits, scripted_metric
    • Bucket
    • Pipeline

配置

  • OPENSEARCH_PATH_CONF=/etc/opensearch
  • Docker /usr/share/opensearch/config/opensearch.yml
  • /etc/opensearch/opensearch.yml
yaml
cluster.name: opensearch1
# 集群管理
node.name: opensearch-cluster_manager
node.roles: [ cluster_manager ]
# 数据
node.name: opensearch-d1
node.roles: [ data, ingest ]
# 调度
node.name: opensearch-c1
node.roles: []

node.attr.zone: zoneA
node.attr.temp: hot

network.host: [_local_, _site_]
discovery.seed_hosts: ["<private IP of opensearch-d1>", "<private IP of opensearch-d2>", "<private IP of opensearch-c1>"]

强制感知 Zone 且平衡副本

http
PUT _cluster/settings
{
  "persistent": {
    "routing.allocation.awareness.balance": "true",
    "cluster.routing.allocation.awareness.attributes": "zone",
    "cluster.routing.allocation.awareness.force.zone.values":["zoneA", "zoneB"]
  }
}

创建 Index 指定节点

http
PUT newindex
{
  "settings": {
    "index.routing.allocation.require.temp": "hot"
  }
}

Performance Analyzer

bash
curl -XPOST localhost:9200/_plugins/_performanceanalyzer/cluster/config -H 'Content-Type: application/json' -d '{"enabled": true}'
# RCA - Root Cause Analyzer
curl -XPOST localhost:9200/_plugins/_performanceanalyzer/rca/cluster/config -H 'Content-Type: application/json' -d '{"enabled": true}'

Helm

运维

bash
# vm.max_map_count=262144
cat /proc/sys/vm/max_map_count

Query

text
GET _analyze
{
  "text": "南京市长江大桥",
  "tokenizer": "standard"
}

POST _analyze
{
  "text": "南京市长江大桥",
  "analyzer": "ik_smart"
}

GET _analyze
{
  "text": "南京市长江大桥",
  "analyzer": "smartcn"
}
bash
# ./bin/opensearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip

./bin/opensearch-plugin install analysis-smartcn
./bin/opensearch-plugin list

Cannot update parameter analyzer from default to

  • mapping 不可修改

关联信息

反向链接、本文链接的其他页面和外部资料。

参考资料

GitHub7 条
其他外链7 条
最近更新commit 8f4d672编辑