关闭

Solr Schema API

346人阅读 评论(1) 收藏 举报
分类:

转自:http://blog.csdn.net/lzx1104/article/details/51438223

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://<host>:<port>/solr/<collection_name>, 如 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操作的资源。


0
0
查看评论

Solr的Schema API(模式)

一、介绍 Solr中的每一个core/collection都拥有自己的schema(模式),在solr 5之前,solr使用schema.xml文件进行定义,早solr 5以后,solr支持通过api对core/collection进行模式的修改。因此在solr 5用户有两种模式方式:经典模式与m...
  • u011518678
  • u011518678
  • 2016-07-11 21:30
  • 1136

Solr5 Schema API

1. Schema API Schema API提供了对每个collection的schema的读写访问。 对所有schema元素的读访问都支持。 字段(Fields), dynamic fields, field types 和 copyField 可以被添加、删除或替代。未来Solr可...
  • lzx1104
  • lzx1104
  • 2016-05-17 18:05
  • 667

Solr SchemaXml 一些解读

Solr SchemaXml 一些解读 博客分类:  Apache Solr   The schema.xml file contains all of the details about which fields your documents can con...
  • baicp3
  • baicp3
  • 2014-01-14 10:10
  • 1650

solr6.6 了解managed-schema

1、managed-schema是什么 managed-schema定义了索引库的数据类型,同时指明某个类型的字段是不是要进行索引,是不是要进行保存到索引库里等等。大概就是做这种事情。 在创建一个core的时候,整个文件会产生,并且里面默认帮忙定义了很多类型,基本够使用了。但还有一些不满足的地方...
  • xiejunjie1
  • xiejunjie1
  • 2017-06-30 16:59
  • 1064

Solr基础教程之Schema.xml(二)

在 Solr 中,使用一个或多个 Document 来构建索引。Document 包括一个或多个 Field。Field 包括名称、内容以及告诉 Solr 如何处理内容的元数据。 例如,Field 可以包含字符串、数字、布尔值或者日期,也可以包含你想添加的任何类型,只需用在solr的配置文件中进行...
  • sun5769675
  • sun5769675
  • 2016-02-23 09:28
  • 3139

Solr入门之官方文档6.0阅读笔记系列(四)

第二部分 Documents, Fields, and Schema Design Defining Fields 定义字段是简单的事情 Example 默认值的定义,其余未定义的使用继承类型的属性 Field Properties name,typ...
  • sqh201030412
  • sqh201030412
  • 2016-06-12 19:13
  • 1138

Solr 6.0 学习(三)Schema.xml 配置

以上配置参考:http://my.oschina.net/HuifengWang/blog/307471 ##################################使用solr遇到一个问题 start############################ solr 在使用查询的时候,【q...
  • upxiaofeng
  • upxiaofeng
  • 2016-05-19 15:12
  • 5035

solr 5.0以后 没有schema.xml未自动创建schema文件

摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中,新加入了动态更新schema功能,这个默认的schema.xml确找不到了,那么managed-schema与schema.xml是什么样的关系,一起来探究一番。 寻找...
  • cyn_653620
  • cyn_653620
  • 2017-05-11 11:32
  • 428

solr 6.0 没有schema.xml未自动创建schema文件

摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中,新加入了动态更新schema功能,这个默认的schema.xml确找不到了,那么managed-schema与schema.xml是什么样的关系,一起来探究一番。寻找缺...
  • jiangchao858
  • jiangchao858
  • 2016-09-12 23:23
  • 4876

solr cloud系列-manage-schema介绍

solr在早期的版本中,是用scheam.xml文件管理集群中字段的配置的,但是在solr5之后,将配置文件的名字改成了manage-schema,所以网上大多数资 料都是在讲schema.xml文件,这两个文件都是一回事。manage-schema是用于配置集群中字段的属性的配置文件,主要是设置字...
  • yangcl123
  • yangcl123
  • 2016-11-01 18:55
  • 782
    个人资料
    • 访问:554447次
    • 积分:7257
    • 等级:
    • 排名:第3671名
    • 原创:75篇
    • 转载:538篇
    • 译文:1篇
    • 评论:91条
    最新评论