Package de.cxp.ocs

Class SearchController

  • All Implemented Interfaces:
    SearchService

    @RefreshScope
    @CrossOrigin(origins="http://localhost:8081")
    @RestController
    @RequestMapping(path="/search-api/v1")
    public class SearchController
    extends Object
    implements SearchService
    • Constructor Detail

      • SearchController

        public SearchController()
    • Method Detail

      • flushConfig

        @GetMapping("/flushConfig/{tenant}")
        public org.springframework.http.ResponseEntity<org.springframework.http.HttpStatus> flushConfig​(@PathVariable("tenant")
                                                                                                        String tenant)
      • search

        @GetMapping("/search/{tenant}")
        public SearchResult search​(@PathVariable("tenant")
                                   String tenant,
                                   SearchQuery searchQuery,
                                   @RequestParam
                                   Map<String,​String> filters)
                            throws Exception
        Description copied from interface: SearchService
        Search the index using the given searchQuery. Each tenant can have its own configuration. Different tenants may still use the same indexes. This is defined by the underlying configuration.
        Specified by:
        search in interface SearchService
        Parameters:
        tenant - the name that correlates to the index configuration
        searchQuery - the user's search terms
        filters - Any other parameters are used as filters. They are validated according to the actual data and configuration. Each filter can have multiple values, separated by comma. Commas inside the values have to be double-URL encoded. Depending on the configured backend type these values are used differently. Examples:
        • brand=adidas
        • brand=adidas,nike (products from adidas OR nike are shown)
        • category=men,shoes,sneaker (if category would be configured as path, these values are used for hierarchical filtering)
        • price=10,99.99 (if price is configured as numeric field, these values are used as range filters)
        • color=red,black (if that field is configured to be used for "exclusive filtering" only products would be shown that are available in red AND black)
        • optional for the future also negations could be supported, e.g. color=red,!black
        Returns:
        the result of that search request
        Throws:
        Exception -
        • if tenant can't be accessed
        • if according index does not exist