【问题标题】:Find index of a document in elastic search using Alias使用别名在弹性搜索中查找文档的索引
【发布时间】:2021-03-21 15:37:24
【问题描述】:

我正在使用别名来索引我在弹性搜索集群中的文档。基本上每个月都会创建此别名下的索引,使用此别名摄取的任何文档都将驻留在与摄取它的月份相对应的索引中。文档使用 Id 和路由 Id 进行索引。

现在有一个用例,我有文档的 Id 和路由 Id,我需要在该文档所在的别名下找到确切的索引。我怎样才能找到它?

例如,ID为A和路由ID为B的文档可以在索引11-2020(2020 年 11 月指数),该指数在 AliasAliasIndex 下。

使用 id 和 routingId 获取操作不起作用,因为它需要传递特定的索引。

我正在使用 Java RestHighLevelClient。

【问题讨论】:

    标签: java elasticsearch alias resthighlevelclient


    【解决方案1】:

    您始终可以通过按 id 搜索来发出搜索请求

    GET alias-index/_search?routing=B
    {
      "query": {
        "term": {
          "_id": "A"
        }
      }
    }
    

    在响应中,您将获得该文档的确切索引。

    【讨论】:

    • 对应的 JavaRestClient 实现是什么?还有Kunal,如果你能写,可以分享一下吗?
    • 嗨@Psycho,对不起,我今天才看到这条评论。这是我编写的代码- QueryBuilder query = QueryBuilders.idsQuery().addIds(idOfDocument*); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(query); return new SearchRequest() .indices(*alias) .routing(**routingKey) .source(searchSourceBuilder);然后我只是调用了resthighlevel客户端的搜索方法并使用它获取了索引 - searchResponse.getHits().getAt(0).getIndex() 希望有帮助。
    猜你喜欢
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2019-05-14
    • 2015-06-01
    • 2018-07-21
    • 2017-09-01
    相关资源
    最近更新 更多