[ https://issues.apache.org/jira/browse/SOLR-7576?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Noble Paul updated SOLR-7576: ----------------------------- Description: Solr now support dynamic loading (SOLR-7073) of components and it is secured in SOLR-7126 We can extend the same functionality with JS as well the handler {{/js}} is implicitly registered To make this work * Solr should be started with {{-Denable.js.loading=true}} * The javascript must be loaded to the {{.system}} collection using the blob store API * Configure the requesthandler with the JS blob name and version * Sign the javascript and pass the signature in a param called {{_sig}} The {{JSRequestHandler}} is implicitly defined and it can be accessed by hitting {{/js/<jsname>/<version>}} sample programs 1) writes a val to output {code:javascript} //empty line $.response().add('testkey','Test Val'); {code} 2) manipulate the output to add an extra field to each doc {code} //empty line var l = []; $.query({ q: '*:*', qt: '/select', start:0, }).forEach('response', function(doc) { doc.put('script', 'Added this value'); l.push(doc); }); $.response().add('alldocs', l); {code} 3) stream through all the docs {code:Javascript} $.query({ q: '*:*', qt: '/select', start:0, distrib:'false' }).pipe('response', 'docs', function(doc) { // the pipe function is executed right before the response writer and right after the transformers if('IT'== doc.get('genre_s')) return null; doc.put('script', 'Added this value'); return doc; }); {code} was: Solr now support dynamic loading (SOLR-7073) of components and it is secured in SOLR-7126 We can extend the same functionality with JS as well example of creating a RequestHandler {code:javascript} curl http://localhost:8983/solr/collection1/config -H 'Content-type:application/json' -d '{ "create-requesthandler" : {"name": "jshandler" , "class":"solr.JSRequestHandler, "defaults": { "js": "myreqhandlerjs", //this is the name of the blob in .system collection "version":"3", "sig":"mW1Gwtz2QazjfVdrLFHfbGwcr8xzFYgUOLu68LHqWRDvLG0uLcy1McQ+AzVmeZFBf1yLPDEHBWJb5KXr8bdbHN/PYgUB1nsr9pk4EFyD9KfJ8TqeH/ijQ9waa/vjqyiKEI9U550EtSzruLVZ32wJ7smvV0fj2YYhrUaaPzOn9g0=" } } }' {code} To make this work * Solr should be started with {{-Denable.js.loading=true}} * The javascript must be loaded to the {{.system}} collection using the blob store API * Configure the requesthandler with the JS blob name and version * Sign the javascript and configure the signature if security is enabled The {{JSRequestHandler}} is implicitly defined and it can be accessed by hitting {{/js/<jsname>/<version>}} > Implement RequestHandler in Javascript > -------------------------------------- > > Key: SOLR-7576 > URL: https://issues.apache.org/jira/browse/SOLR-7576 > Project: Solr > Issue Type: New Feature > Reporter: Noble Paul > Attachments: SOLR-7576.patch > > > Solr now support dynamic loading (SOLR-7073) of components and it is secured > in SOLR-7126 > We can extend the same functionality with JS as well > the handler {{/js}} is implicitly registered > To make this work > * Solr should be started with {{-Denable.js.loading=true}} > * The javascript must be loaded to the {{.system}} collection using the blob > store API > * Configure the requesthandler with the JS blob name and version > * Sign the javascript and pass the signature in a param called {{_sig}} > The {{JSRequestHandler}} is implicitly defined and it can be accessed by > hitting {{/js/<jsname>/<version>}} > sample programs > 1) writes a val to output > {code:javascript} > //empty line > $.response().add('testkey','Test Val'); > {code} > 2) manipulate the output to add an extra field to each doc > {code} > //empty line > var l = []; > $.query({ > q: '*:*', > qt: '/select', > start:0, > }).forEach('response', function(doc) { > doc.put('script', 'Added this > value'); > l.push(doc); > }); > $.response().add('alldocs', l); > {code} > 3) stream through all the docs > {code:Javascript} > $.query({ > q: '*:*', > qt: '/select', > start:0, > distrib:'false' > }).pipe('response', 'docs', function(doc) { // the pipe function is > executed right before the response writer and right after the transformers > if('IT'== doc.get('genre_s')) return > null; > doc.put('script', 'Added this > value'); > return doc; > }); > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org