For my use case I need as the title states. Currently I have it working but it is rather slow. This is my implementation:
$query['body']['aggs'] = [ 'title' => [ 'terms' => [ 'size' => 10, 'field' => 'title', 'order' => ['max_score' => 'desc'] ], 'aggs' => [ 'max_score' => [ 'max' => [ 'script' => '_score' ] ], 'highlight' => [ 'top_hits' => [ '_source' => [ 'includes' => 'title' ], 'size' => 1, 'highlight' => [ 'fields' => [ 'title' => [ 'pre_tags' => '<em class="highlight">', 'post_tags' => '</em>' ] ] ] ] ] ] ] ]; }
Elastic suggesters are almost perfect for my use case but I want to be able to start searching in the middle of a string instead of only prefixing it.
Since the implementation from above is rather slow and suggesters don't fit my exact use case I now have a duplicate bucket where I only store unique values. This isn't ideal since I could get vast amount of buckets in the future.