Not able to Query alphanumeric fields from ELASTIC SEARCH using TERMS QUERY

elasticsearch, elasticsearch-jest, java, query-builder

Solution

If you have not customized the mappings/analysis for the `caid`-field, then your values are indexed as e.g. `a100945`, `a100896` (note the lowercasing.)

The `terms`-query does not do query-time text-analysis, so you'll be searching for `A100945` which does not match `a100945`.

This is quite a common problem, and is explained a bit more in this article on Troubleshooting Elasticsearch searches, for Beginners.

Problem

I am trying to query Alphanumeric values from the index using TERMS QUERY, But it is not giving me the output. Query: ``` { "size" : 10000, "query" : { "bool" : { "must" : { "terms" : { "caid" : [ "A100945","A100896" ] } } } }, "fields" : [ "acco", "bOS", "aid", "TTl", "caid" ] } ``` I want to get all the entries that has caid A100945 or A100896 The same query works fine for NUmeric fields. I am not planning to use QueryString/MatchQuery as i am trying to build general query builder that can build query for all the request. Hence am looking to get the entries usinng TERMS Query only. Note: I am using Java API org.elasticsearch.index.query.QueryBuilders for building the Query. eg: QueryBuilders.termQuery("caid", "["A10xxx", "A101xxx"]") Please help. Regards, Mik

Original source