Calling Developers!
We are reenergizing our code contribution process! Learn More

What are the Slack Archives?

It’s a history of our time together in the Slack Community! There’s a ton of knowledge in here, so feel free to search through the archives for a possible answer to your question.

Because this space is not active, you won’t be able to create a new post or comment here. If you have a question or want to start a discussion about something, head over to our categories and pick one to post in! You can always refer back to a post from Slack Archives if needed; just copy the link to use it as a reference..

Does anybody know how to make Elasticsearch 7 return more than the default 10 facets?

Options
U01LKKBK97T
U01LKKBK97T Posts: 287 🧑🏻‍🚀 - Cadet

Does anybody know how to make Elasticsearch 7 return more than the default 10 facets?

Comments

  • jochen.gartner
    jochen.gartner Posts: 42 🧑🏻‍🚀 - Cadet
    edited August 2021
    Options

    you can pass an aggregationParam "size" with the FacetConfigTransfer

  • UP8T3GKFH
    UP8T3GKFH Posts: 56 🧑🏻‍🚀 - Cadet
    Options

    I agree to @UN96SRMN0. We implemented it as follows:

    class ProductSearchConfigExpanderPlugin extends SprykerProductSearchConfigExpanderPlugin
    {
        private const FIELD_NAME = 'integer-facet';
        private const MAX_SIZE = 999;
    
        /**
         * @return \Generated\Shared\Transfer\SearchConfigExtensionTransfer
         */
        public function getSearchConfigExtension()
        {
            $productSearchConfigExtensionTransfer = new SearchConfigExtensionTransfer();
            $key = $this->getKey();
            $data = $this->getProductSearchConfigExtensionData($key);
            if ($data !== null) {
                $data = $this->changeFilterFacetMaxSize($data);
                $productSearchConfigExtensionTransfer->fromArray($data, true);
            }
    
            return $productSearchConfigExtensionTransfer;
        }
    
        /**
         * @param array $data
         *
         * @return array
         */
        private function changeFilterFacetMaxSize(array $data): array
        {
            if ($data['facet_configs'] !== null) {
                foreach ($data['facet_configs'] as $key => $facet) {
                    if ($facet['field_name'] !== static::FIELD_NAME) {
                        $facet['aggregation_params']['size'] = static::MAX_SIZE;
                        $data['facet_configs'][$key] = $facet;
                    }
                }
            }
    
            return $data;
        }
    }
    

    I hope it works on ES 7 also.

  • U01LKKBK97T
    U01LKKBK97T Posts: 287 🧑🏻‍🚀 - Cadet
    Options

    Thanks guys, I'll give it a try.