作者:6057318491 | 来源:互联网 | 2023-05-17 21:36
业务场景,并不是我们业务的所有字段都需要在schema.xml、managed-schema指定成固定的字段。<fieldnamenametypestringindexe
业务场景,并不是我们业务的所有字段都需要在schema.xml、managed-schema指定成固定的字段。
、这些都是固定的
例如我现在有一个新业务,大概有5个字段,需要拼接在原来的core里面,那么dynamicField就发挥了它的用武之地了。
直接上代码:
schema.xml、managed-schema文件中的配置如下
存放String类型
存放double类型
存放long类型
java代码:
public static void testAddPerson(){
try{
// 得到请求
SolrClient sc = getSolrClient();
// 拼装文本
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", 1);
doc.addField("solrField_s_1", "1");
doc.addField("solrField_s_2", "2");
doc.addField("solrField_d_1", "2.0");
doc.addField("solrField_l_1", "1239012320");
sc.add(doc);
sc.commit();
} catch (SolrServerException e) {
new SolrUtils().logger.error(e.getMessage());
throw new CenException("solr备注报错");
} catch (IOException e) {
new SolrUtils().logger.error(e.getMessage());
throw new CenException("solr备注报错");
}
}
public static SolrClient getSolrClient() {
String url = "xxxxx";//这里是solr的实例的请求地址
return new HttpSolrClient(url);
}
查询结果:
{
"responseHeader":{
"status":0,
"QTime":135,
"params":{
"q":"*:*",
"indent":"on",
"wt":"json",
"_":"1510043041895"}},
"response":{"numFound":1,"start":0,"docs":[
{
"id":1,
"solrField_s_1":"1",
"keywords":["1",
"2",
"2.0",
"1239012320"],
"solrField_s_2":"2",
"solrField_d_1":2.0,
"solrField_l_1":1239012320,
"_version_":1583395999953453056}]
}}
通过结果可以看出,我的schema.xml里面根本就没配置
solrField_s_1,solrField_s_2,solrField_d_1,solrField_l_1这些字段,但是却能把数据放进去,放进去了,肯定可以根据对应的字段进行查询。