solr 6.0 沒有schema.xml未自動創建schema文件


 

solr 6.0 沒有schema.xml未自動創建schema文件

摘要:在之前的Solr版本中(Solr5之前),在創建core的時候,Solr會自動創建好schema.xml,但是在之后的版本中,新加入了動態更新schema功能,這個默認的schema.xml確找不到了,那么managed-schema與schema.xml是什么樣的關系,一起來探究一番。

尋找缺失的schema.xml

  1. 在Solr的配置文件里,有兩個文件很重要,一個是solrconfig.xml,還有一個就是schema.xml。 
    solrconfig 
    Solr6創建完core以后,默認已經生成了solrconfig.xml,但是卻找不到schema.xml

  2. 在管理頁面,可以看到,雖然Schema可以點擊,但是內容是空的,只可以添加Filed。 
    Schema

  3. 原來,在Solr5以后,這個schema文件已經不是默認生成好的了,它被取了一個名字managed-schema,並且沒有后綴。乍一看,以為是打不開的文件,當然沒有什么能難倒程序員的,用Notepad++打開,發現了熟悉的文字,這不就是之前的schema.xml文件嗎? 
    schema.xml

This is the Solr schema file. This file should be named “schema.xml” and 
should be in the conf directory under the solr home 
(i.e. ./solr/conf/schema.xml by default) 
or located where the classloader for the Solr webapp can find it.

  • 文檔中還明確說明了,這個文檔應該根據實際情況放到合適的位置,並把文件命名為schema.xml.這次我們就直接把文件名改成schema.xml就可以了,位置就是當前文件夾。 
    file

動態更新schema.xml

在之前的版本中,我們是可以在solr的管理頁面直接查看schema.xml文件的,但是不能對其做修改,如果手動更改schema.xml文件,需要重啟服務器才能生效。在現在的版本中,是可以直接編輯這個文件的,在Schema選項下,有AddField、Add Dynamic Field、Add Copy Field三個基礎功能。

如果你手動將managed-schema文件改為schema.xml,那么在重新啟動以后,solr會將schema.xml改名為schema.xml.bak,並再次生成一個managed-schema文件。 
schema.xml 
打開這個managed-schema文件,會發現這個文件不允許修改的。 
Do Not EDIT

solr使用schema.xml還是managed-schema

solr6使用<schemaFactory/>來控制使用schema的方式,默認使用的是ManagedIndexSchemaFactory,但是在solrconfig.xml文件中,這個配置沒有顯示的指定出來,其實它相當於

 <schemaFactory class="ManagedIndexSchemaFactory"> <bool name="mutable">true</bool> <str name="managedSchemaResourceName">managed-schema</str> </schemaFactory>
  • mutable 是否改變Schema數據,設置為false可以防止他人更改Schema
  • managedSchemaResourceName 可以指定Schema的名字,當然值不能是schema.xml

如果你已經熟悉了之前的配置方式,可以使用ClassicIndexSchemaFactory,只需要在solrconfig.xml文件中添加這樣的配置<schemaFactory class="ClassicIndexSchemaFactory"/>即可,當然這就需要你必須配置一個schema.xml文件。

如果你在使用SolrCloud,上述的操作應該是在ZooKeeper中完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM