# \[bug\] Search by field which contain "@"

**URL:** <https://discuss.elastic.co/t/bug-search-by-field-which-contain/95384>\
**Category:** Elasticsearch\
**Created:** [August 1, 2017, 4:58pm UTC](https://discuss.elastic.co/t/bug-search-by-field-which-contain/95384 "2017-08-01T16:58:37Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![denis.peshkov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis.peshkov/32/20686_2.png) [@denis.peshkov](https://discuss.elastic.co/u/denis.peshkov)\
**Post date:** [August 1, 2017, 4:58pm UTC](https://discuss.elastic.co/t/bug-search-by-field-which-contain/95384/1 "2017-08-01T16:58:37Z")

</div>

Hi guys,  
I have a problem with search by field which contain "@" (email field).  
---create a new entity---

```auto
POST http://ua1-2003-pc.gtech.local:9200/idx2/create HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==
User-Agent: Telerik Test Studio for APIs
Host: ua1-2003-pc.gtech.local:9200
Content-Length: 121
Expect: 100-continue
Connection: Keep-Alive

```

```auto
{
	"id": 541706163,
	"message": "messaaage",
	"email": "test@gmail.com",
	"state": "staaate",
	"count": 541706163
}

```

* * *

--- get response ---

```auto
HTTP/1.1 201 Created
Content-Length: 158
Content-Type: application/json; charset=UTF-8
Location: /idx2/create/AV2eb15oXF93XOTI570L

```

```auto
{"_index":"idx2","_type":"create","_id":"AV2eb15oXF93XOTI570L","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"created":true}

```

* * *

--- try to search ---

```auto
POST http://ua1-2003-pc.gtech.local:9200/idx2/_search HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==
User-Agent: Telerik Test Studio for APIs
Host: ua1-2003-pc.gtech.local:9200
Content-Length: 133
Expect: 100-continue
Connection: Keep-Alive

```

```auto
{
	"query": {
		"bool": {
			"filter": {
				"prefix": {
					"email": {
						"value": "test"
					}
				}
			}
		}
	}
}

```

* * *

--- get response ---

```auto
HTTP/1.1 200 OK
Content-Length: 329
Content-Type: application/json; charset=UTF-8

```

```auto
{"took":2,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":0.0,"hits":[{"_index":"idx2","_type":"create","_id":"AV2eb15oXF93XOTI570L","_score":0.0,"_source":{
	"id": 541706163,
	"message": "messaaage",
	"email": "test@gmail.com",
	"state": "staaate",
	"count": 541706163
}}]}}

```

* * *

but in case when I try use "value": "test@gmail.com"  
or "value": "test@" I get hits.total 0

---

<div class="post-metadata">

**Author:** ![denis.peshkov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis.peshkov/32/20686_2.png) [@denis.peshkov](https://discuss.elastic.co/u/denis.peshkov)\
**Post date:** [August 1, 2017, 4:59pm UTC](https://discuss.elastic.co/t/bug-search-by-field-which-contain/95384/2 "2017-08-01T16:59:11Z")

</div>

```auto
{
  "name" : "UA1-2003-PC",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "1LP3cU92ScaaBom-2DD-MQ",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 1, 2017, 5:27pm UTC](https://discuss.elastic.co/t/bug-search-by-field-which-contain/95384/3 "2017-08-01T17:27:16Z")

</div>

It's the way analyzers are working. You need to understand how analysis is working.  
A prefix query is not analyzed. So your query does not match what you have in the inverted index.

---

<div class="post-metadata">

**Author:** ![denis.peshkov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis.peshkov/32/20686_2.png) [@denis.peshkov](https://discuss.elastic.co/u/denis.peshkov)\
**Post date:** [August 2, 2017, 11:31am UTC](https://discuss.elastic.co/t/bug-search-by-field-which-contain/95384/4 "2017-08-02T11:31:27Z")

</div>

> [@dadoonet](#):
>
> not match what you have in the inverted index

sorry, I'm not sure that understood

if it is typical work of analyzer, so how I can set a prefix or term for emails?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 2, 2017, 11:46am UTC](https://discuss.elastic.co/t/bug-search-by-field-which-contain/95384/5 "2017-08-02T11:46:59Z")

</div>

This is working well:

```auto
DELETE test
PUT test
{
  "mappings": {
    "doc": {
      "properties": {
        "email": {
          "type": "keyword"
        }
      }
    }
  }
}
PUT test/doc/1
{
	"email": "test@gmail.com"
}
GET test/_search
{
	"query": {
		"bool": {
			"filter": {
				"prefix": {
					"email": {
						"value": "test@"
					}
				}
			}
		}
	}
}

```

---

<div class="post-metadata">

**Author:** ![denis.peshkov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis.peshkov/32/20686_2.png) [@denis.peshkov](https://discuss.elastic.co/u/denis.peshkov)\
**Post date:** [August 2, 2017, 2:08pm UTC](https://discuss.elastic.co/t/bug-search-by-field-which-contain/95384/6 "2017-08-02T14:08:14Z")

</div>

thanks, it helps

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [August 30, 2017, 2:08pm UTC](https://discuss.elastic.co/t/bug-search-by-field-which-contain/95384/7 "2017-08-30T14:08:46Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
