国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

Solr修改架構(gòu)

2018-11-13 14:23 更新
POST /collection/schema

Solr 如果要添加、刪除或替換字段、動(dòng)態(tài)字段規(guī)則、復(fù)制字段規(guī)則或新字段類型,可以將 POST 請(qǐng)求發(fā)送到 /collection/schema/ 端點(diǎn),并使用一系列命令以執(zhí)行請(qǐng)求的操作。支持以下命令:

  • add-field:用你提供的參數(shù)添加一個(gè)新的字段。
  • delete-field:刪除一個(gè)字段。
  • replace-field:用一個(gè)不同的配置替換現(xiàn)有的字段。
  • add-dynamic-field:使用您提供的參數(shù)添加新的動(dòng)態(tài)字段規(guī)則。
  • delete-dynamic-field:刪除一個(gè)動(dòng)態(tài)的字段規(guī)則。
  • replace-dynamic-field:用一個(gè)配置不同的現(xiàn)有動(dòng)態(tài)字段規(guī)則替換。
  • add-field-type:用你提供的參數(shù)添加一個(gè)新的字段類型。
  • delete-field-type:刪除一個(gè)字段類型。
  • replace-field-type:用不同的配置替換現(xiàn)有的字段類型。
  • add-copy-field:添加一個(gè)新的復(fù)制字段規(guī)則。
  • delete-copy-field:刪除復(fù)制字段規(guī)則。

這些命令可以在不同的 POST 請(qǐng)求或相同的 POST 請(qǐng)求中發(fā)出。命令按照指定的順序執(zhí)行。

在每種情況下,響應(yīng)將包括處理請(qǐng)求的狀態(tài)和時(shí)間,但不包括整個(gè)架構(gòu)。

在使用 API?? 修改架構(gòu)時(shí),將自動(dòng)發(fā)生核心重新加載,以便隨后對(duì)其索引的文檔立即進(jìn)行更改。以前索引的文檔不會(huì)自動(dòng)處理 - 如果他們使用了您更改的架構(gòu)元素,則必須重新編制索引。

添加一個(gè)新的字段

該 add-field 命令將新的字段定義添加到您的架構(gòu)中。如果同名的字段存在,則會(huì)引發(fā)錯(cuò)誤。

當(dāng)使用手動(dòng) schema.xml 編輯定義字段時(shí)可用的所有屬性都可以通過 API 傳遞。這些請(qǐng)求屬性在“ 定義字段 ”一節(jié)中詳細(xì)介紹。

例如,要定義一個(gè)名為 “sell-by”,類型為 “pdate” 的新存儲(chǔ)字段,您可以發(fā)送以下請(qǐng)求:

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

刪除一個(gè)字段

該 delete-field 命令從架構(gòu)中刪除字段定義。如果該字段在架構(gòu)中不存在,或者該字段是復(fù)制字段規(guī)則的源或目標(biāo),則會(huì)引發(fā)錯(cuò)誤。

例如,要?jiǎng)h除名為 “sell-by” 的字段,可以發(fā)送以下請(qǐng)求:

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

替換一個(gè)字段

該 replace-field 命令替換字段的定義。請(qǐng)注意,您必須提供字段的完整定義 - 此命令不會(huì)部分修改字段的定義。如果該架構(gòu)中不存在該字段,則會(huì)引發(fā)錯(cuò)誤。

使用手動(dòng) schema.xml 編輯定義字段時(shí)可用的所有屬性都可以通過 API 傳遞。這些請(qǐng)求屬性在“ 定義字段 ”一節(jié)中詳細(xì)介紹。

例如,要替換現(xiàn)有字段 “sell-by” 的定義,使其為 “date” 類型而不被存儲(chǔ),則會(huì)發(fā)送以下請(qǐng)求:

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

添加動(dòng)態(tài)字段規(guī)則

該 add-dynamic-field 命令將新的動(dòng)態(tài)字段規(guī)則添加到您的架構(gòu)中。

當(dāng)使用 schema.xml 編輯時(shí)的所有可用的屬性都可以通過 POST 請(qǐng)求傳遞。“ 動(dòng)態(tài)字段 ”部分詳細(xì)介紹了可以為動(dòng)態(tài)字段規(guī)則定義的所有屬性。

例如,要?jiǎng)?chuàng)建一個(gè)新的動(dòng)態(tài)字段規(guī)則,其中所有以“_s”結(jié)尾的傳入字段將被存儲(chǔ)并且具有字段類型“string”,您可以像這樣發(fā)送請(qǐng)求:

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

刪除動(dòng)態(tài)字段規(guī)則

該 delete-dynamic-field 命令從架構(gòu)中刪除一個(gè)動(dòng)態(tài)的字段規(guī)則。如果架構(gòu)中不存在動(dòng)態(tài)字段規(guī)則,或者架構(gòu)包含的目標(biāo)或目標(biāo)僅與此動(dòng)態(tài)字段規(guī)則匹配的副本字段規(guī)則,則會(huì)引發(fā)錯(cuò)誤。

例如,要?jiǎng)h除匹配“* _s”的動(dòng)態(tài)字段規(guī)則,可以像這樣發(fā)布請(qǐng)求:

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

替換動(dòng)態(tài)字段規(guī)則

該 replace-dynamic-field 命令將替換模式中的動(dòng)態(tài)字段規(guī)則。請(qǐng)注意,您必須提供動(dòng)態(tài)字段規(guī)則的完整定義 - 此命令不會(huì)部分修改動(dòng)態(tài)字段規(guī)則的定義。如果模式中不存在動(dòng)態(tài)字段規(guī)則,則會(huì)引發(fā)錯(cuò)誤。

當(dāng)使用 schema.xml 編輯時(shí)的所有可用的屬性都可以通過 POST 請(qǐng)求傳遞。“ 動(dòng)態(tài)字段 ”部分詳細(xì)介紹了可以為動(dòng)態(tài)字段規(guī)則定義的所有屬性。

例如,要將“* _s”動(dòng)態(tài)字段規(guī)則的定義替換為字段類型為“text_general”且未存儲(chǔ)的規(guī)則,可以像這樣發(fā)布請(qǐng)求:

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

添加一個(gè)新的字段類型

該 add-field-type 命令將新的字段類型添加到您的架構(gòu)中。

schema.xml 手動(dòng)編輯時(shí)可用的所有字段類型屬性都可用于 POST 請(qǐng)求。命令的結(jié)構(gòu)是標(biāo)準(zhǔn)字段類型定義的 JSON 映射,包括名稱、類、索引和查詢分析器定義等。有關(guān)所有可用選項(xiàng)的詳細(xì)信息,請(qǐng)參見“ Solr字段類型 ”一節(jié)。

例如,要?jiǎng)?chuàng)建一個(gè)名為 “myNewTxtField” 的新字段類型,可以按如下方式發(fā)布請(qǐng)求:

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/gettingstarted/schema

注意在這個(gè)例子中,我們只定義了一個(gè)分析器部分,它將應(yīng)用于索引分析和查詢分析。如果我們想定義單獨(dú)的分析,我們將使上面的例子中的 analyzer 部分用單獨(dú)的部分 indexAnalyzer 和 queryAnalyzer 取代。正如在下面這個(gè)例子所述:

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/gettingstarted/schema

刪除一個(gè)字段類型

該 delete-field-type 命令從模式中刪除字段類型。如果模式中不存在字段類型,或模式中的任何字段或動(dòng)態(tài)字段規(guī)則使用字段類型,則會(huì)引發(fā)錯(cuò)誤。

例如,要?jiǎng)h除名為 “myNewTxtField” 的字段類型,可以按如下所示進(jìn)行 POST 請(qǐng)求:

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

替換一個(gè)字段類型

該 replace-field-type 命令將替換模式中的字段類型。請(qǐng)注意,您必須提供字段類型的完整定義 - 此命令不會(huì)部分修改字段類型的定義。如果模式中不存在字段類型,則會(huì)引發(fā)錯(cuò)誤。

schema.xml 手動(dòng)編輯時(shí)可用的所有字段類型屬性都可用于 POST 請(qǐng)求。命令的結(jié)構(gòu)是標(biāo)準(zhǔn)字段類型定義的 JSON 映射,包括名稱、類、索引和查詢分析器定義等。有關(guān)所有可用選項(xiàng)的詳細(xì)信息,請(qǐng)參見“ Solr字段類型 ”一節(jié)。

例如,要替換名為“myNewTxtField”的字段類型的定義,可以按如下方式創(chuàng)建POST請(qǐng)求:

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/gettingstarted/schema

添加新的復(fù)制字段規(guī)則

該 add-copy-field 命令將新的復(fù)制字段規(guī)則添加到您的架構(gòu)中。

該命令所支持的屬性與在創(chuàng)建復(fù)制字段規(guī)則時(shí)通過手動(dòng)編輯 schema.xml 相同,如下所示:

source

源字段。該參數(shù)是必需的。

dest

源字段將被復(fù)制到的字段或字段數(shù)組。該參數(shù)是必需的。

maxChars

要復(fù)制的字符數(shù)的上限。復(fù)制字段部分有更多的細(xì)節(jié)。

例如,要定義將字段 “shelf” 復(fù)制到 “l(fā)ocation” 和 “catchall” 字段的規(guī)則,可以發(fā)送以下請(qǐng)求:

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

刪除復(fù)制字段規(guī)則

該 delete-copy-field 命令從模式中刪除復(fù)制字段規(guī)則。如果模式中不存在復(fù)制字段規(guī)則,則會(huì)引發(fā)錯(cuò)誤。

該命令要求 source 和 dest 屬性。

例如, 要?jiǎng)h除一條將字段 "shelf" 復(fù)制到 "location" 字段的規(guī)則,您可以發(fā)布以下請(qǐng)求:

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

單個(gè) POST 中的多個(gè)命令

可以在單個(gè)命令中執(zhí)行一個(gè)或多個(gè)添加請(qǐng)求。API 是事務(wù)性的,單個(gè)調(diào)用中的所有命令要么一起成功,要么一起失敗。

這些命令按照指定的順序執(zhí)行。這意味著如果你想創(chuàng)建一個(gè)新的字段類型并且在同一請(qǐng)求中使用新字段的字段類型,那么創(chuàng)建字段類型的請(qǐng)求部分必須位于創(chuàng)建新字段的部分之前。類似地,由于字段必須存在才能用于復(fù)制字段規(guī)則,因此添加字段的請(qǐng)求必須出現(xiàn)在請(qǐng)求字段用作復(fù)制字段規(guī)則的源或目標(biāo)之前。

進(jìn)行多個(gè)請(qǐng)求的語法支持多種方法。首先,命令可以簡單地按順序進(jìn)行,就像在這個(gè)請(qǐng)求中創(chuàng)建一個(gè)新的字段類型,然后是一個(gè)使用該類型的字段:

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/gettingstarted/schema

或者,可以重復(fù)相同的命令,如下例所示:

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/gettingstarted/schema

最后,重復(fù)的命令可以作為數(shù)組發(fā)送:

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/gettingstarted/schema

副本之間的架構(gòu)變化

在 SolrCloud 模式下運(yùn)行時(shí),對(duì)一個(gè)節(jié)點(diǎn)上的架構(gòu)所做的更改將傳播到集合中的所有副本。

您可以將 updateTimeoutSecs 參數(shù)與您的請(qǐng)求一起傳遞,以設(shè)置等待的秒數(shù),直到所有副本確認(rèn)它們應(yīng)用了架構(gòu)更新。這有助于您的客戶端應(yīng)用程序更加健壯,因?yàn)槟梢源_保所有副本在指定的時(shí)間內(nèi)都有給定的架構(gòu)更改。

如果在指定時(shí)間內(nèi)沒有達(dá)成所有副本的協(xié)議,則請(qǐng)求將失敗,并且錯(cuò)誤消息將包含有關(guān)哪些副本有問題的信息。在大多數(shù)情況下,唯一的選擇是在等待一段時(shí)間后重新嘗試更改。如果問題仍然存在,那么您可能需要調(diào)查在應(yīng)用更改時(shí)遇到問題的副本上的服務(wù)器日志。

如果您沒有提供 updateTimeoutSecs 參數(shù),則默認(rèn)行為是在將更新持久化到 ZooKeeper 之后,接收節(jié)點(diǎn)立即返回。所有其他副本將異步應(yīng)用更新。因此,如果不提供超時(shí),則客戶端應(yīng)用程序無法確定所有副本都應(yīng)用了更改。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)