Classes/Eel/ElasticSearchQueryBuilder.php
public function query(NodeInterface $contextNode)
    {
        // on indexing, the __parentPath is tokenized to contain ALL parent path parts,
        // e.g. /foo, /foo/bar/, /foo/bar/baz; to speed up matching.. That's why we use a simple "term" filter here.
        // http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-filter.html
        // another term filter against the path allows the context node itself to be found
        $this->queryFilter('bool', [
            'should' => [
                [
                    'term' => ['__parentPath' => $contextNode->getPath()]
                ],
                [
                    'term' => ['__path' => $contextNode->getPath()]
                ]
            ]
        ]);

        //
        // http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html
        $this->queryFilter('terms', ['__workspace' => array_unique(['live', $contextNode->getContext()->getWorkspace()->getName()])]);

        // match exact dimension values for each dimension, this works because the indexing flattens the node variants for all dimension preset combinations
        $dimensionCombinations = $contextNode->getContext()->getDimensions();
        if (is_array($dimensionCombinations)) {
            $this->queryFilter('term', ['__dimensionCombinationHash' => md5(json_encode($dimensionCombinations))]);
        }

        $this->contextNode = $contextNode;

        return $this;
    }
public function query(NodeInterface $contextNode)
    {
        // on indexing, the __parentPath is tokenized to contain ALL parent path parts,
        // e.g. /foo, /foo/bar/, /foo/bar/baz; to speed up matching.. That's why we use a simple "term" filter here.
        // http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-filter.html
        // another term filter against the path allows the context node itself to be found
        $this->queryFilter('bool', [
            'should' => [
                [
                    'term' => ['__parentPath' => $contextNode->getPath()]
                ],
                [
                    'term' => ['__path' => $contextNode->getPath()]
                ]
            ]
        ]);

        //
        // http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html
        $this->queryFilter('terms', ['__workspace' => array_unique(['live', $contextNode->getContext()->getWorkspace()->getName()])]);

        // match exact dimension values for each dimension, this works because the indexing flattens the node variants for all dimension preset combinations
        $dimensionCombinations = $contextNode->getContext()->getDimensions();
        if (is_array($dimensionCombinations)) {
            $this->queryFilter('term', ['__dimensionCombinationHash' => md5(json_encode($dimensionCombinations))]);
        }

        $this->contextNode = $contextNode;

        return $this;
    }
public function query ( NodeInterface $ contextNode ) { // on indexing, the __parentPath is tokenized to contain ALL parent path parts, // e.g. /foo, /foo/bar/, /foo/bar/baz; to speed up matching.. That's why we use a simple "term" filter here. // http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-filter.html // another term filter against the path allows the context node itself to be found $ this -> queryFilter ( 'bool' , [ 'should' => [ [ 'term' => [ '__parentPath' => $ contextNode -> getPath ( ) ] ] , [ 'term' => [ '__path' => $ contextNode -> getPath ( ) ] ] ] ] ) ; // // http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html $ this -> queryFilter ( 'terms' , [ '__workspace' => array_unique ( [ 'live' , $ contextNode -> getContext ( ) -> getWorkspace ( ) -> getName ( ) ] ) ] ) ; // match exact dimension values for each dimension, this works because the indexing flattens the node variants for all dimension preset combinations $ dimensionCombinations = $ contextNode -> getContext ( ) -> getDimensions ( ) ; if ( is_array ( $ dimensionCombinations ) ) { $ this -> queryFilter ( 'term' , [ '__dimensionCombinationHash' => md5 ( json_encode ( $ dimensionCombinations ) ) ] ) ; } $ this -> contextNode = $ contextNode ; return $ this ; }
Sets the starting point for this query. Search result should only contain nodes that
match the context of the given node and have it as parent node in their rootline.

@param NodeInterface $contextNode
@return QueryBuilderInterface
@throws QueryBuildingException
@throws \Neos\Flow\Persistence\Exception\IllegalObjectTypeException
@api
Sets the starting point for this query . Search result should only contain nodes that match the context of the given node and have it as parent node in their rootline .