ElasticSearch in Grails, search return no results when domain field has value with @ character


I encountered a problem when I was changing Searchable plugin to
ElasticSearch plugin (:elasticsearch: for Grails (2.4.4).

Let's say that I have domain object and a service:

class Person {
String firstName
String lastName
String email
static constraints = {
id bindable: true
firstName blank: false
lastName blank: false
email blank: false, unique: true, email: true
static searchable = {
root true
only = ['id', 'firstName', 'lastName', 'email']

class SearchService {

List<Person> findPersons(String searchPhrase) {
    Innovator.search(searchPhrase + '*').searchResults


My Config.groovy file contains following config:

elasticSearch {
client.mode = 'local'
index.store.type = 'memory'
date.formats = []
defaultExcludedProperties = ["password"]
disableAutoIndex = false
datastoreImpl = 'hibernateDatastore'
bulkIndexOnStartup = true
maxBulkRequest = 500

Suppose that we have following person in DB:

Person(firstName: 'Julius', lastName: 'Caesar', email:

Now, when I invoke findPersons('Julius') or findPersons('Caesar') or
findPersons('Jul') etc. then as a result I get list with one Person object.
But when I try to search using phrase with '@' character for example:
findPersons('julius.caesar@doma') or findPersons('julius.caesar@domain.com')
I do not receive any results, hovever findPersons('julius.caesar') is ok.
Analogical code in Searchable plugin works correct.

I've tried to remove '*' character and it didn't help.

As workaround I changed searchable closure to:
static searchable = {
root true
email index : 'not_analyzed'
only = ['id', 'firstName', 'lastName', 'email']

and findPersons method to:
List findPersons(String searchPhrase) {
searchPhrase += '*'

Now I can use findPersons('julius.caesar@domain.com') to find Person
object. But this is exact value and I would like to use also prefix search
for email field.
For example: findPersons('julius.caesar@doma') should also return Person as
a result.

Thank you for any tips and any help in solving this issue.


You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/50e30fc4-0d64-4ae9-b230-5877cfc25100%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.