Elasticsearch 不仅是一个强大的搜索引擎,还提供了高级功能和丰富的生态系统支持。本篇将深入探讨这些特性,并介绍如何与其他工具协同工作。
1. 高级特性
1.1 跨集群搜索(Cross-Cluster Search)
跨集群搜索允许查询多个独立集群的数据,适用于分布式系统。
- 配置远程集群:
PUT _cluster/settings {"persistent": {"cluster.remote": {"remote_cluster": {"seeds": ["remote-host:9300"]}}} }
- 查询示例:
GET /remote_cluster:my_index,my_index/_search {"query": { "match": { "title": "Elasticsearch" } } }
1.2 脚本(Painless Script)使用
Painless 是 Elasticsearch 的内置脚本语言,用于动态计算或过滤。
- 示例:计算字段值:
GET /my_index/_search {"script_fields": {"total_views": {"script": {"lang": "painless","source": "doc['views'].value * 2"}}} }
- 更新文档:
POST /my_index/_update/1 {"script": {"source": "ctx._source.views += params.increment","params": { "increment": 10 }} }
1.3 向量搜索与机器学习集成
- 向量搜索:用于相似性匹配(如图像、文本嵌入)。
- 定义映射:
PUT /my_index {"mappings": {"properties": {"vector": { "type": "dense_vector", "dims": 3 }}} }
- 查询:
GET /my_index/_search {"query": {"script_score": {"query": { "match_all": {} },"script": {"source": "cosineSimilarity(params.query_vector, 'vector')","params": { "query_vector": [1.0, 2.0, 3.0] }}}} }
- 定义映射:
- 机器学习:需启用 X-Pack,提供异常检测、预测等功能。
Mermaid 图示 - 向量搜索流程