Solr的Schema API(模式)
Posted 莫西里
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr的Schema API(模式)相关的知识,希望对你有一定的参考价值。
一、介绍
Solr中的每一个core/collection都拥有自己的schema(模式),在solr 5之前,solr使用schema.xml文件进行定义,早solr 5以后,solr支持通过api对core/collection进行模式的修改。因此在solr 5用户有两种模式方式:经典模式与manager-schema,两种模式。
二、解释
1、经典模式与manager-schema
(1)经典模式
经典模式下,用户只能通过schema.xml文件去定义FieldType、Field等,因此这种情况下需要特别的注意在定义模式小心出现漏定义的错误。因为solr5以后的版本默认使用manage-schema模式,因此如果想使用经典模式,则需要在solrconfig.xml文件中定义schemaFactory标签进行模式的定义:
<schemaFactory class="ClassicIndexSchemaFactory"/>
(2)manager-schema
manage-schema模式不支持用户通过修改manage-schema文件去进行FieldType、Field的修改(但实际上是可以manage-schema文件进行修改)。manage-schema提供一套schema api去创建、修改、删除FieldType、Field等。定义方式为:
<schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>
nanagedSchemaResourceName属性定义了schema.xml文件的路径,这里使用的是相对路径,因此managed-schema文件跟solrconfig.xml文件在同一个目录中。
2、managed-schema模式下的Schema API
Schema API是一套REST风格的API,用户可以通过浏览器,或者使用某种语言中的HTTPClient
对象进行访问。
(1)定义新模式
HTTP Method:POST; Content-type:json,则定义新默认的Java代码为
public void addField() throws IOException
String urlStr="http://192.98.12.36:8983/solr/techproducts/schema";
URL url=new URL(urlStr);
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-type", "application/json");
connection.setDoOutput(true);
connection.setDoInput(true);
BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
JSONObject field=new JSONObject();
field.put("name", "test");
field.put("type", "text_general");
field.put("stored", true);
JSONObject addDoc=new JSONObject();
addDoc.put("add-field",field);
System.out.println(addDoc.toString());
writer.write(addDoc.toString());
writer.flush();
writer.close();
//
BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
while(reader.ready())
System.out.println(reader.readLine());
reader.close();
以上是关于Solr的Schema API(模式)的主要内容,如果未能解决你的问题,请参考以下文章
Solr 5.1.0:如何通过 Schema API 设置唯一键