Solr的Schema API(模式)
2016-07-11 21:30
387 查看
一、介绍
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中的每一个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();
}
相关文章推荐
- Android Manifest 用法
- 什么是 GraphQL?
- Spark RDD API详解(一) Map和Reduce
- Spring Boot 开发微服务
- lwn拾遗:[sn3218 led drivers]-api解释-1
- 页面元素查找之Selectors API
- 一个小型js框架myJSFrame附API使用帮助
- PostgreSQL教程(二):模式Schema详解
- 详细分析交换机、路由器、集线器的区别和联系
- PowerShell打开或关闭光驱
- 批处理的api WMIC学习体会有感第1/2页
- 批处理 API实现文件下载的代码第1/2页
- Lua教程(十七):C API简介
- 强制删除工具 xdelbox xdelbox1.5正式版下载
- 揪出交换机端口背后“凶手”导致网速太慢
- 电脑重启后突然检测不到硬盘的原因分析与解决办法
- C#中设计、使用Fluent API
- Google官方支持的NodeJS访问API,提供后台登录授权
- PQ分区出错! 巧用Ghost急速补救的绝妙办法
- 深入C++中API的问题详解