Since you didn't post your code it's hard to tell what's wrong, but "index": "not_analyzed"
in your mapping is the right way to handle this.
Here is a simple working example. First I create a mapping that uses "index": "not_analyzed"
:
PUT /test_index
{
"mappings": {
"doc": {
"properties": {
"name":{
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
Then add a couple of documents for testing
POST /test_index/doc/_bulk
{"index":{"_id":1}}
{"name":"XYZ Company Solutions"}
{"index":{"_id":2}}
{"name":"Another Company"}
Now I can get the document I want with a simple term query:
POST /test_index/doc/_search
{
"query": {
"term": {
"name": {
"value": "XYZ Company Solutions"
}
}
}
}
...
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "test_index",
"_type": "doc",
"_id": "1",
"_score": 1,
"_source": {
"name": "XYZ Company Solutions"
}
}
]
}
}
A term filter or even match query would also work in this case.
Here is the code I used to test it:
http://sense.qbox.io/gist/90fcc7f7a88d58f098c50d5aaf0315fdf06e9e9a