使用 SolrJ 基于 class 创建 Solr 模式

Creating Solr schema based on a class using SolrJ

在应用程序启动时,我想检查架构是否存在,并且: 1) 如果没有 -> 从包含字段的 Java class 创建模式 2) 如果上述 class 不同 -> 更新架构 3) 如果模式映射 1:1 与 Java class 中的字段则什么也不做

我已将我的任务分为 3 个子任务,第一个是从现有 Java class.

创建一个模式

这是我的 class(省略了 getter 和 setter):

public class Order {
private String name;
private String phone;
private Address address;

private List<Amenities> amenities;
private BigDecimal distance;
private String image;
private List<Attributes> attributes;
private List<String> networks;
private OrderType orderType;
private Service service;
}

如您所见,它有相当多的字段类型,这些字段类型也应该用于创建模式(递归?)。甚至可以创建这样的模式吗?

做起来应该很简单:

首先,您需要列出class的所有字段,可以通过reflection. After it, you should use Schema API实现,这样您就可以对schema的字段进行CRUD操作。

/schema/fields 将允许您获取所有字段,然后您可以使用 replace-field 更新字段,delete-field 删除字段和 add-field 添加场地。有关更多信息,请查看此 documentation.

警告:从 Solr 5.3

开始添加了架构 API