SlideShare a Scribd company logo
By David Smiley
On February 2020
At a NEST Meetup
› A Principal Software Engineer at Salesforce
› Apache Lucene/Solr committer & PMC member
› Author of Solr Enterprise Search Server books
› Quiz: how many plugin types? ____
– … in Lucene & Solr combined?
– A class/interface whose implementation can be specified via
configuration
› Many more actual plugins exist
› Search platforms need to be pluggable
› Where do you find out about plugins today?
– Solr Ref Guide
– Colleagues
– Conferences, Meetups
– Blogs
– Search results
› Plugin sources
– built-in: Comes with Solr; no installation step
– contrib: Comes with Solr; need to install JARs(*)
– 3rd party: External; compile/download, install
› Place JARs into a suitable directory
– <solr-home>/lib
– <solr-core>/lib
– solrconfig.xml <lib … />
Sometimes necessary:
– server/solr-webapp/webapp/WEB-INF/lib
Jetty/JVM plugins:
– server/lib and server/lib/ext
› Read documentation for how to configure
› Sometimes a plugin is always configured the same:
– <queryparser name=“foo”
class=“com.acme.FooQParser”/>
› Often not:
– TokenFilters: to which field type? Where in chain?
Consider RPM, Docker Hub, IDEs, many other examples
Why:
› Discoverability via a common registry
› Ease of installation via CLI commands
› And especially the 2nd order effects…
(break up the Solr monolith)
› Some built-in plugins become contribs
– Better security
– Fewer dependencies of Solr core (JAR hell deterrent)
– Usable in older Solr releases
– Ex: SolrTextTagger?
› Some contrib plugins become 3rd-party
– Better security
– Less burden on maintaining Solr (test time, docs, dev)
– Smaller Solr distribution / Docker image
– Separate release cycles from Solr
– Ex: DIH, Velocity/Solritas
› Support common plugin types
› A public plugin registry
› CLI & Web API commands
– to install a plugin
– to configure a plugin!
– to update a plugin (new version)
› Plugin management at runtime
› Plugin dependency isolation (JAR hell deterrent)
Easy to find
& install plugins!
Once upon a time…
› 2013-08, SOLR-5103, Grant Ingersoll
– Mostly discussion
› 2015-02 SOLR-7073, Noble Paul
– runtimeLib & .system collection / blob store
› 2017-05, SOLR-10665, Jan Høydahl
– Designs, POC, PF4J based, conf talk, … abandoned
› 2019-07, SOLR-13661, Noble Paul & Ishan C.
– Wider feedback; committed to v8.4
New in 8.4
› Plugin type
– A base class/interface that Lucene/Solr loads dynamically
› Plugin
– An implementation of a plugin type
› Package
– A collection of plugins, plus metadata
› Repository
– A web location (URL) hosting plugins
› Enable package manager
› Add a repository
› List packages
› Install a package
› Deploy a package
– CLI vs manual
› https://github.com/erikhatcher/solritas/
Likely more typical than automated…
<requestHandler name="/myhandler”
class="mypackage:full.path.to.MyClass” />
curl "http://localhost:8983/api/collections/collection1/
config/params" 
-H 'Content-type:application/json’ 
-d "{set: {PKG_VERSIONS: {mypackage: '1.0.0'}}}"
› Where packages (JARs) are actually placed
› Distributed peer-to-peer synchronized directory
› Potential for other uses
– Large resources – machine learning models
› Compare to “.system” collection…
› Discuss: Good, bad, …
› Update a plugin live, in-place
– No core reload!
› Discuss: Good, bad, …
› Everything is deemed experimental
› Support more plugin types
– Schema plugins!
– Also hot-loading for more types; some can’t do this
› Convert contribs to a local plugin repository
› Create an official/primary plugin repository
› Better documentation
– See https://lucene.apache.org/solr/guide/8_4/package-
manager.html
› Who runs the plugin repository / decides inclusion
› Self-configuring plugins
› Hot-loading plugins
› Assign different package versions to different collections
› How a configSet declares it needs a package
› Eliminating <lib/> in solrconfig.xml
› Security (keys, signing, opting-out)
Resources:
› Ref guide
– https://lucene.apache.org/solr/guide/8_4/package-manager-
internals.html
› Solritas packaging example
– https://github.com/erikhatcher/solritas/
› Activate Conference Presentation
– https://youtu.be/YQBhEojf358
“Dynamic Plugin Loading & Safe Mode Solr”

More Related Content

PDF
Installing and Getting Started with Alfresco
PPTX
PPTX
Alfresco search services: Now and Then
PDF
F03 a history of (open) conversation alfresco at university of zaragoza
PPTX
WWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
PPTX
Alfresco Tech Talk Live 106
PDF
Intro to Apache Solr
PDF
Visualize Solr Data with Banana: Presented by Andrew Thanalertvisuti, Lucidworks
Installing and Getting Started with Alfresco
Alfresco search services: Now and Then
F03 a history of (open) conversation alfresco at university of zaragoza
WWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
Alfresco Tech Talk Live 106
Intro to Apache Solr
Visualize Solr Data with Banana: Presented by Andrew Thanalertvisuti, Lucidworks

Similar to 2020-02 Solr's New Plugin System (20)

PDF
Solr's missing plugin ecosystem
PDF
Meet Solr For The Tirst Again
PPS
Introduction to Solr
PDF
Solr Application Development Tutorial
PPTX
Search Engine Capabilities - Apache Solr(Lucene)
PDF
Solr Recipes Workshop
PDF
Solr Recipes
PPTX
Coffee at DBG- Solr introduction
PDF
Introduction to Solr
PDF
Introduction to Solr
PDF
Suche mit Apache Lucene & Co.
PDF
Ease of use in Apache Solr
PPTX
Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)
PDF
Apache Solr! Enterprise Search Solutions at your Fingertips!
KEY
ApacheCon Europe 2012 -Big Search 4 Big Data
KEY
Big Search with Big Data Principles
KEY
Apache Solr - Enterprise search platform
PDF
Alfresco tech talk live on solr august 2012
PDF
Solr search engine with multiple table relation
Solr's missing plugin ecosystem
Meet Solr For The Tirst Again
Introduction to Solr
Solr Application Development Tutorial
Search Engine Capabilities - Apache Solr(Lucene)
Solr Recipes Workshop
Solr Recipes
Coffee at DBG- Solr introduction
Introduction to Solr
Introduction to Solr
Suche mit Apache Lucene & Co.
Ease of use in Apache Solr
Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)
Apache Solr! Enterprise Search Solutions at your Fingertips!
ApacheCon Europe 2012 -Big Search 4 Big Data
Big Search with Big Data Principles
Apache Solr - Enterprise search platform
Alfresco tech talk live on solr august 2012
Solr search engine with multiple table relation
Ad

More from David Smiley (7)

PPTX
H-Hypermap Heatmap Analytics at Scale
PPTX
2016-01 Lucene Solr spatial in 2015, NYC Meetup
PPTX
Populate your Search index, NEST 2016-01
PPTX
Lucene/Solr spatial in 2015
PPTX
2014 11 lucene spatial temporal update
PDF
Solr: 4 big features
PPTX
Lucene 4 spatial
H-Hypermap Heatmap Analytics at Scale
2016-01 Lucene Solr spatial in 2015, NYC Meetup
Populate your Search index, NEST 2016-01
Lucene/Solr spatial in 2015
2014 11 lucene spatial temporal update
Solr: 4 big features
Lucene 4 spatial
Ad

Recently uploaded (20)

PDF
Modernizing your data center with Dell and AMD
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Big Data Technologies - Introduction.pptx
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
A Presentation on Artificial Intelligence
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Electronic commerce courselecture one. Pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
cuic standard and advanced reporting.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Approach and Philosophy of On baking technology
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Modernizing your data center with Dell and AMD
Diabetes mellitus diagnosis method based random forest with bat algorithm
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I
NewMind AI Monthly Chronicles - July 2025
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Network Security Unit 5.pdf for BCA BBA.
Big Data Technologies - Introduction.pptx
CIFDAQ's Market Insight: SEC Turns Pro Crypto
“AI and Expert System Decision Support & Business Intelligence Systems”
A Presentation on Artificial Intelligence
The AUB Centre for AI in Media Proposal.docx
Electronic commerce courselecture one. Pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
cuic standard and advanced reporting.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Approach and Philosophy of On baking technology
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf

2020-02 Solr's New Plugin System

  • 1. By David Smiley On February 2020 At a NEST Meetup
  • 2. › A Principal Software Engineer at Salesforce › Apache Lucene/Solr committer & PMC member › Author of Solr Enterprise Search Server books
  • 3. › Quiz: how many plugin types? ____ – … in Lucene & Solr combined? – A class/interface whose implementation can be specified via configuration › Many more actual plugins exist › Search platforms need to be pluggable
  • 4. › Where do you find out about plugins today? – Solr Ref Guide – Colleagues – Conferences, Meetups – Blogs – Search results › Plugin sources – built-in: Comes with Solr; no installation step – contrib: Comes with Solr; need to install JARs(*) – 3rd party: External; compile/download, install
  • 5. › Place JARs into a suitable directory – <solr-home>/lib – <solr-core>/lib – solrconfig.xml <lib … /> Sometimes necessary: – server/solr-webapp/webapp/WEB-INF/lib Jetty/JVM plugins: – server/lib and server/lib/ext
  • 6. › Read documentation for how to configure › Sometimes a plugin is always configured the same: – <queryparser name=“foo” class=“com.acme.FooQParser”/> › Often not: – TokenFilters: to which field type? Where in chain?
  • 7. Consider RPM, Docker Hub, IDEs, many other examples Why: › Discoverability via a common registry › Ease of installation via CLI commands › And especially the 2nd order effects… (break up the Solr monolith)
  • 8. › Some built-in plugins become contribs – Better security – Fewer dependencies of Solr core (JAR hell deterrent) – Usable in older Solr releases – Ex: SolrTextTagger? › Some contrib plugins become 3rd-party – Better security – Less burden on maintaining Solr (test time, docs, dev) – Smaller Solr distribution / Docker image – Separate release cycles from Solr – Ex: DIH, Velocity/Solritas
  • 9. › Support common plugin types › A public plugin registry › CLI & Web API commands – to install a plugin – to configure a plugin! – to update a plugin (new version) › Plugin management at runtime › Plugin dependency isolation (JAR hell deterrent) Easy to find & install plugins!
  • 10. Once upon a time… › 2013-08, SOLR-5103, Grant Ingersoll – Mostly discussion › 2015-02 SOLR-7073, Noble Paul – runtimeLib & .system collection / blob store › 2017-05, SOLR-10665, Jan Høydahl – Designs, POC, PF4J based, conf talk, … abandoned › 2019-07, SOLR-13661, Noble Paul & Ishan C. – Wider feedback; committed to v8.4
  • 12. › Plugin type – A base class/interface that Lucene/Solr loads dynamically › Plugin – An implementation of a plugin type › Package – A collection of plugins, plus metadata › Repository – A web location (URL) hosting plugins
  • 13. › Enable package manager › Add a repository › List packages › Install a package › Deploy a package – CLI vs manual
  • 15. Likely more typical than automated… <requestHandler name="/myhandler” class="mypackage:full.path.to.MyClass” /> curl "http://localhost:8983/api/collections/collection1/ config/params" -H 'Content-type:application/json’ -d "{set: {PKG_VERSIONS: {mypackage: '1.0.0'}}}"
  • 16. › Where packages (JARs) are actually placed › Distributed peer-to-peer synchronized directory › Potential for other uses – Large resources – machine learning models › Compare to “.system” collection… › Discuss: Good, bad, …
  • 17. › Update a plugin live, in-place – No core reload! › Discuss: Good, bad, …
  • 18. › Everything is deemed experimental › Support more plugin types – Schema plugins! – Also hot-loading for more types; some can’t do this › Convert contribs to a local plugin repository › Create an official/primary plugin repository › Better documentation – See https://lucene.apache.org/solr/guide/8_4/package- manager.html
  • 19. › Who runs the plugin repository / decides inclusion › Self-configuring plugins › Hot-loading plugins › Assign different package versions to different collections › How a configSet declares it needs a package › Eliminating <lib/> in solrconfig.xml › Security (keys, signing, opting-out)
  • 20. Resources: › Ref guide – https://lucene.apache.org/solr/guide/8_4/package-manager- internals.html › Solritas packaging example – https://github.com/erikhatcher/solritas/ › Activate Conference Presentation – https://youtu.be/YQBhEojf358 “Dynamic Plugin Loading & Safe Mode Solr”

Editor's Notes

  • #4: 114 via ResourceLoader 34 Classloader.forName Solr probably has a greater proportion of those abstractions.
  • #6: Most plugins, first section. Examples: JTS dependency… not really a 1st class plugin but 2nd order dependency. Examples: logger. Or SSL related thing.
  • #7: Consequently, there are some steps to do in your configuration.
  • #20: “Contentious” : subject to debate