elasticsearch - ElasticSearch 跨集群 GET by _id
问题描述
我有 3 个 ElasticSearch 6.3.2 集群:主集群、东集群和西集群。'main' 配置为在东部和西部执行跨集群搜索。这很好用,因为我可以对 main 执行 POST 查询并从所有 3 个集群中获取数据。但是,我很难从 main 对远程集群执行一些 GET 查询。例如:
http://esmain.example.com:9200/west:error-2019.04/_search
产生命中;一条记录的_id为“M2ywYGoBhIcw2VqxQ9FD”
如果我尝试通过 GET 仅查询此记录,如下所示:
http://esmain.example.com:9200/west:error-2019.04/error/M2ywYGoBhIcw2VqxQ9FD
我得到:
{
error: {
root_cause: [
{
type: "index_not_found_exception",
reason: "no such index",
resource.type: "index_expression",
resource.id: "west:error-2019.04",
index_uuid: "_na_",
index: "west:error-2019.04"
}
],
type: "index_not_found_exception",
reason: "no such index",
resource.type: "index_expression",
resource.id: "west:error-2019.04",
index_uuid: "_na_",
index: "west:error-2019.04"
},
status: 404
}
有了这个身体:
{
"query": {
"bool": {
"must":
{ "match": { "_id": "M2ywYGoBhIcw2VqxQ9FD" } }
}
}
}
我得到正确的记录,没有错误。可以通过 GET 查询驻留在主集群上的记录没有问题(即http://esmain.example.com:9200/error-2019.04/error/rf2P2mkBIndI5iSJGgRd),所以我很确定我的文档类型和语法是正确的.
尽管 POST 是一种变通方法,但我希望能够为开发人员提供易于使用的 URL 而不是 POST 正文,因为它使他们更容易找到错误记录。
解决方案
跨集群搜索仅用于发送搜索查询(即在_search
端点上)而不是 GET 或 DELETE(按 ID)查询,这些查询仍然必须直接在相应的集群上执行。
您可以做的一件事是为您的开发人员提供更简单的无正文搜索查询,例如以下与正文的 POST 完全一样的目的:
GET http://esmain.example.com:9200/west:error-2019.04/_search?q=_id:M2ywYGoBhIcw2VqxQ9FD
推荐阅读
- sql - TEIID 函数不返回值
- angular - MatSort 按语言 iso 代码
- vue.js - Vue 3 / Vue Router 4 router-link 不会使用 prop 的完整链接
- python - 从 rpy2 运行 DESeq2
- html - 如何在css中显示随机句子
- excel - 如何遍历数据转储并将唯一值粘贴到两个单独的表中 [VBA]
- javascript - div高度计算不适用于移动设备
- java - 使用 GSON Java 在 JSON 中创建嵌套列表的列表
- javascript - 在页面滚动上平滑地显示html文本一个字母?
- c# - Blazor 单选按钮双向绑定不适用于属性