I recently noticed that there is a Schema API in Solr 5.X that can be used to update the Solr schema. You need to have the schemaFactory set to use the "ManagedIndexSchemaFactory", and have the mutable property set to true. If you want to stop allowing the schema from being updated via the API, then you can change the mutable property to false.
Here are a few of the things that you can do with the schema API:
View the schema for a collection:
http://localhost:8983/solr/yourcollectionname/schema
View all of the fields in the schema:
http://localhost:8983/solr/yourcollectionname/schema/fields
Example output:
{
"responseHeader":{
"status":0,
"QTime":101
},
"fields":[
{
"name":"_text_",
"type":"text_general",
"multiValued":true,
"indexed":true,
"stored":false},
{
"name":"_version_",
"type":"long",
"indexed":true,
"stored":true},
{
"name":"id",
"type":"string",
"multiValued":false,
"indexed":true,
"required":true,
"stored":true,
"uniqueKey":true},
{
"name":"somefieldname",
"type":"lowercase",
"indexed":true,
"stored":true},
{
"name":"title",
"type":"strings"
}
]
}
View a specific field in the schema:
http://localhost:8983/solr/yourcollectionname/schema/fields/somefieldname
Example output:
{
"responseHeader":{
"status":0,
"QTime":1},
"field":{
"name":"somefieldname",
"type":"lowercase",
"indexed":false,
"stored":true
}
}
Now add a new field called "anotherfield" that is of type "text_en", stored, and indexed:
curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field":{"name":"anotherfield","type":"text_en","stored":true,"indexed":true }}' http://localhost:8983/solr/yourcollectionname/schema
Now let's see that the field exists:
http://localhost:8983/solr/yourcollectionname/schema/fields/anotherfield
{
"responseHeader":
{
"status":0,
"QTime":1
},
"field":
{
"name":"anotherfield",
"type":"text_en",
"indexed":true,
"stored":true
}
}
Now let's delete the field:
curl -X POST -H 'Content-type:application/json' --data-binary '{"delete-field" : { "name":"anotherfield" }}' http://localhost:8983/solr/yourcollectionname/schema
And check to see that it is deleted:
http://localhost:8983/solr/yourcollectionname/schema/fields/anotherfield
{
"responseHeader":
{
"status":404,
"QTime":2
},
"error":
{
"msg":"Field 'anotherfield' not found.",
"code":404
}
}
There are other actions that you can do using the Schema API. Here are a few of the things that you can do using the Schema API:
- replace a field
- add and remove dynamic field patterns
- view dynamic fields
- and and remove field types
- view field types
No comments:
Post a Comment