首页 文章

如何在索引期间在spring数据elasticsearch中指定路由键 .

提问于
浏览
0

如何在索引期间指定spring数据弹性搜索中的路由键 .

我做了一个spring boot应用程序,它使用spring数据elasticsearch索引文档 .

下面是我的文档结构(没有getter setters) .

@Document(indexName = Constants.ES_INDEX_NAME, type = Constants.ES_TYPE,createIndex = false)
public class EsDocument {

    @Id
    private String ID;

    private String group;

    private String request;

    private String response;

    private Filters filters;

    public EsDocument() {
    }
}

public class Filters {

    private String order_id;
    private String api_type;
    private int status;
    private String statusCode;
    private String createdAt;
}

这是索引文档的代码 . 我正在使用 ElasticSearchTemplate 索引我的数据 .

public void saveAll(List<EsDocument> esDocuments) {
        List<IndexQuery> queries = new ArrayList<>();
        for(EsDocument esDocument : esDocuments) {
            IndexQuery indexQuery = new IndexQuery();
            indexQuery.setObject(esDocument);
            indexQuery.setIndexName(esDocument.getGroup());
            queries.add(indexQuery);
        }
        if (queries.size() > 0) {
            elasticsearchTemplate.bulkIndex(queries);
        }
        logger.info("Batch Documents Saved to elastic search");
    }

现在如何在索引期间添加 custom routing key ?我想在索引期间添加 filters.order_id 作为我的路由键 .

1 回答

  • 0

    AFAIK ElasticsearchTemplate在某些区域缺少对路由的支持,您必须转到客户端以提供必要的路由信息 .

    尝试一些类似的东西

    Client client = elasticsearchTemplate.getClient();
    IndexRequestBuilder builder = client.prepareIndex(...);
    builder.setRouting(...);
    

相关问题