我正在使用彈簧資料彈性搜索。根據請求中的不同標頭,我創建 @RequestScope 物件 IndexConfig 來保存不同的索引集。它似乎正在作業。但我不明白單例 bean DocumentA/DocumentB 如何處理動態索引?我是否也需要設定它們@RequestScope?
@Component
@Data
@RequestScope
public class IndexConfig {
private String AIndexName;
private String BIndexName;
}
@Component
public class RequestFilter implements Filter {
@Autowired
private IndexConfig indexConfig ;
public void doFilter(ServletRequest req,....) {
if(httpRequest.getHeader("one"){
indexConfig.setAIndexName("A1);
indexConfig.setBIndexName("B1);
}else if(httpRequest.getHeader("two"){
indexConfig.setAIndexName("A2);
indexConfig.setBIndexName("B2);
}
..
}
}
@Document(indexName = "#{@indexConfig.getAIndexName()}", createIndex = false)
public class DocumentA {}
@Document(indexName = "#{@indexConfig.getBIndexName()}", createIndex = false)
public class DocumentB {}
uj5u.com熱心網友回復:
是什么讓您認為DocumentAor DocumentB` 是單例?這些是您存盤和檢索的物體。
您可以使用 的方法或使用存盤庫函式來創建DocumentA并存盤它的實體。ElasticsearchOperations當從 Spring Data Elasticsearch 檢索資料時,您會回傳新實體,其中填充了從 Elasticsearch 讀取的資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/470846.html
