
目前刚学solr,公司数据存储是把每个对象里面字段都拆分开写在同一级的,求问下大佬,可以以对象形式保存吗,类似于json一样,比如org_id和org_type写成这样 "orgInfo":{"org_id:1,"org_type":1}吗
关于solr存储问题,是否可以存储对象
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-07-31 07:48关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
Solr支持将实体类型作为索引来存储。这意味着你可以创建一个名为
MyEntity的类,并使用@Field注解定义属性。例如:
@Entity @Table(name = "my_entity") public class MyEntity { @Id private String id; // 其他属性... }然后在你的Solr配置文件中启用这个实体类型:
<settings> <indexer> <type>my_entity</type> </indexer> </settings>这样,当你向Solr发送HTTP请求时,它会尝试解析并处理
MyEntity类型的实体。如果你想要像JSON那样格式化这些实体,你可以使用Java的Jackson库或第三方库(如Gson)来序列化它们。
例如,对于上面的例子,你可以这样做:
import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class Application { @Autowired ApplicationContext context; ObjectMapper mapper = new ObjectMapper(); @GetMapping("/entity") public String entity(@RequestParam("id") String id) throws Exception { return mapper.writeValueAsString(context.getBean(MyEntity.class)); } }这段代码会在URL
/entity?id=<id>上返回包含实体类型的字符串表示。你需要根据实际情况调整bean的名称和属性。解决 无用评论 打赏 举报