diff --git a/Highlight/Highlight.php b/Highlight/Highlight.php index cee68eed71c641bf66e0fdb1b859f4294127dcef..68601de46c1e77e80580c7fc9c19aec3c0bd97f3 100644 --- a/Highlight/Highlight.php +++ b/Highlight/Highlight.php @@ -11,13 +11,14 @@ namespace ONGR\ElasticsearchBundle\DSL\Highlight; +use ONGR\ElasticsearchBundle\DSL\BuilderInterface; use ONGR\ElasticsearchBundle\DSL\NamedBuilderBag; use ONGR\ElasticsearchBundle\DSL\NamedBuilderInterface; /** * Data holder for highlight api. */ -class Highlight extends NamedBuilderBag +class Highlight extends NamedBuilderBag implements BuilderInterface { const TYPE_PLAIN = 'plain'; const TYPE_POSTINGS = 'postings'; @@ -170,6 +171,14 @@ class Highlight extends NamedBuilderBag return $this; } + /** + * {@inheritdoc} + */ + public function getType() + { + return 'highlight'; + } + /** * {@inheritdoc} */ @@ -182,6 +191,7 @@ class Highlight extends NamedBuilderBag 'fragment_size' => $this->fragmentSize, 'number_of_fragments' => $this->numberOfFragments, 'tags_schema' => $this->tagsSchema, + 'fields' => $this->getFields(), ] ); @@ -197,11 +207,21 @@ class Highlight extends NamedBuilderBag } } - /** @var NamedBuilderInterface $field */ - foreach ($this->all() as $field) { - $highlight['fields'][$field->getName()] = $field->toArray(); + return $highlight; + } + + /** + * Returns fields as array. + * + * @return array + */ + private function getFields() + { + $out = []; + foreach ($this->all() as $builder) { + $out = array_merge($out, [$builder->getName() => $builder->toArray()]); } - return $highlight; + return $out; } }