Solr5 Schema API

1. Schema API

Schema API提供了对每个collection的schema的读写访问。
对所有schema元素的读访问都支持。
字段(Fields), dynamic fields, field types 和 copyField 可以被添加、删除或替代。未来Solr可能支持对更多schema元素的写操作。

注意:一旦schema被修改,重新索引所有数据。

要通过API修改schema, schema需要是managed且mutable, 参见Managed Schema配置。
API运行两种输出模式:JSON或XML.
当使用API修改schema时,core reload会自动发生以使之生效。

API的基本地址是 http://:/solr/, 如 http://localhost:8983/solr/test

1.1 API入口点(Entry Points)

/schema:  获取schema, 或修改schema用以添加、删除或替换字段、动态字段、拷贝字段, 或字段类型。
/schema/fields:  获取所有fields或指定field信息。
/schema/dynamicfields:  获取所有dynamic fields或指定field规则信息。
/schema/copyfields:  获取copy fields信息。
/schema/fieldtypes:  获取所有field types或指定field type信息。
/schema/name: 获取schema名称
/schema/version:
/schema/uniquekey:
/schema/similarity:
/schema/solrqueryparser/defaultoperator:

例:
curl http://localhost:8983/solr/test/schema  #GET (-O)

1.2 修改Schema

POST请求到/collection/schema,并提交一系列命令。

* add-field: 使用你提供的参数添加一个新的字段。
* delete-field: 删除一个字段
* replace-field: 使用不同配置替换已有字段

* add-dynamic-field: 使用你提供的参数添加一个新的dynamic字段。
* delete-dynamic-field: 删除一个dynamic字段
* replace-dynamic-field: 使用不同配置替换已有dynamic字段

* add-field-type: 使用你提供的参数添加一个新的字段类型。
* delete-field-type: 删除一个字段类型
* replace-field-type: 使用不同配置替换已有字段类型

* add-copy-field: 添加一个新的copy字段。
* delete-copy-field: 删除一个copy字段

这些命令可以在单独的post, 也可以在同一个post中,将按指定的顺序执行。

- Add a New Field

curl -X POST -H 'Content-type:application/json' --data-binary '{
  "add-field":{ 
    "name":"sell-by",
    "type":"tdate",
    "stored":true }
}' http://localhost:8983/solr/test/schema

- Delete a Field
curl -X POST -H 'Content-type:application/json' --data-binary '{
  "delete-field" : { "name":"sell-by" }
}' http://localhost:8983/solr/test/schema


- Replace a Field

curl -X POST -H 'Content-type:application/json' --data-binary '{
"replace-field":{ 
"name":"sell-by",
"type":"date",
"stored":false }
}' http://localhost:8983/solr/test/schema


- Add a Dynamic Field Rule

curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-dynamic-field":{ 
"name":"*_s",
"type":"string",
"stored":true }
}' http://localhost:8983/solr/test/schema


- Delete a Dynamic Field Rule

curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-dynamic-field":{ "name":"*_s" }
}' http://localhost:8983/solr/test/schema


- Replace a Dynamic Field Rule

curl -X POST -H 'Content-type:application/json' --data-binary '{
"replace-dynamic-field":{ 
"name":"*_s",
"type":"text_general",
"stored":false }
}' http://localhost:8983/solr/test/schema


- Add a New Field Type

curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field-type" : {
  "name":"myNewTxtField",
  "class":"solr.TextField",
  "positionIncrementGap":"100",
  "analyzer" : {
    "charFilters":[{
    "class":"solr.PatternReplaceCharFilterFactory",
    "replacement":"$1$1",
    "pattern":"([a-zA-Z])\\\\1+" }],
    "tokenizer":{ 
    "class":"solr.WhitespaceTokenizerFactory" },
  "filters":[{
    "class":"solr.WordDelimiterFilterFactory",
    "preserveOriginal":"0" }]}}
}' http://localhost:8983/solr/test/schema


curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field-type":{
"name":"myNewTextField",
"class":"solr.TextField",
"indexAnalyzer":{
  "tokenizer":{
    "class":"solr.PathHierarchyTokenizerFactory", 
    "delimiter":"/" }},
"queryAnalyzer":{
  "tokenizer":{ 
  "class":"solr.KeywordTokenizerFactory" }}}
}' http://localhost:8983/solr/test/schema


- Delete a Field Type

curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-field-type":{ "name":"myNewTxtField" }
}' http://localhost:8983/solr/test/schema


- Replace a Field Type

curl -X POST -H 'Content-type:application/json' --data-binary '{
"replace-field-type":{
  "name":"myNewTxtField",
  "class":"solr.TextField",
  "positionIncrementGap":"100",
  "analyzer":{
    "tokenizer":{ 
    "class":"solr.StandardTokenizerFactory" }}}
}' http://localhost:8983/solr/test/schema


- Add a New Copy Field Rule

curl -X POST -H 'Content-type:application/json' --data-binary '{
  "add-copy-field":{
  "source":"shelf",
  "dest":[ "location", "catchall" ]}
}' http://localhost:8983/solr/test/schema


- Delete a Copy Field Rule

curl -X POST -H 'Content-type:application/json' --data-binary '{
"delete-copy-field":{ "source":"shelf", "dest":"location" }
}' http://localhost:8983/solr/test/schema


- 多个命令在一个POST中

API是事务性的,多个命令要么同时成功,要么都失败。

几种不同语法。

curl -X POST -H 'Content-type:application/json' --data-binary '{
  "add-field-type":{
    "name":"myNewTxtField",
    "class":"solr.TextField",
    "positionIncrementGap":"100",
    "analyzer":{
        "charFilters":[{
            "class":"solr.PatternReplaceCharFilterFactory",
            "replacement":"$1$1",
            "pattern":"([a-zA-Z])\\\\1+" }],
        "tokenizer":{ 
            "class":"solr.WhitespaceTokenizerFactory" },
        "filters":[{
            "class":"solr.WordDelimiterFilterFactory",
            "preserveOriginal":"0" }]}},
  "add-field" : { 
    "name":"sell-by",
    "type":"myNewTxtField",
    "stored":true }
}' http://localhost:8983/solr/test/schema


curl -X POST -H 'Content-type:application/json' --data-binary '{
  "add-field":{ 
    "name":"shelf",
    "type":"myNewTxtField",
    "stored":true },
  "add-field":{ 
    "name":"location",
    "type":"myNewTxtField",
    "stored":true },
  "add-copy-field":{ 
    "source":"shelf",
    "dest":[ "location", "catchall" ]}
}' http://localhost:8983/solr/test/schema


curl -X POST -H 'Content-type:application/json' --data-binary '{
  "add-field":[
    { "name":"shelf",
      "type":"myNewTxtField",
      "stored":true },
    { "name":"location",
      "type":"myNewTxtField",
      "stored":true }]
}' http://localhost:8983/solr/test/schema


- 在复制集之间修改Schema
当以SolrCloud模式运行时,一个节点的修改会传递到所有集合。你可以传递一个updateTimeoutSecs参数,
来指定等待所有复制节点确认应用了此修改所等待的时间(秒数)。


1.3 获取Schema信息


- Retrieve the Entire Schema

路径参数:
/collection/

请求参数:
wt

例:
curl http://localhost:8983/solr/test/schema
curl http://localhost:8983/solr/test/schema?wt=json
curl http://localhost:8983/solr/test/schema?wt=xml
curl http://localhost:8983/solr/test/schema?wt=schema.xml


- List Fields

路径参数:
/collection/fieldname

请求参数:
wt=json/xml
fl=
includeDynamic=false/true
showDefaults=false/true

例:
curl http://localhost:8983/solr/test/schema/fields?wt=json

- List Dynamic Fields

路径参数:
/collection/fieldname/

请求参数:
wt=json/xml
showDefaults=false/true

例:
curl http://localhost:8983/solr/test/schema/dynamicfields?wt=json

- List Field Types

路径参数:
/collection/fieldname/

请求参数:
wt=json/xml
showDefaults=false/true

例:
curl http://localhost:8983/solr/test/schema/fieldtypes?wt=json

- List Copy Fields

路径参数:
/collection/

请求参数:
wt=json/xml
source.fl=
dest.fl=

例:
curl http://localhost:8983/solr/test/schema/copyfields?wt=json

- Show Schema Name

curl http://localhost:8983/solr/test/schema/name?wt=json

- Show the Schema Version

curl http://localhost:8983/solr/test/schema/version?wt=json

- List UniqueKey

curl http://localhost:8983/solr/test/schema/uniquekey?wt=json

- Show Global Similarity

curl http://localhost:8983/solr/test/schema/similarity?wt=json

- Get the Default Query Operator

curl http://localhost:8983/solr/test/schema/solrqueryparser/defaultoperator?wt=json

1.4 Manage Resource Data

Manage Resource REST API 提供了一个机制,任何Solr插件可暴露支持CRUD操作的资源。






























你可能感兴趣的:(Lucene/Solr)