Hello,
My mapping is below (Elasticsearch version 7.4.1):
PUT /test
{
"mappings": {
"properties": {
"countryCd": {
"type": "text"
},
"langSetId": {
"type": "long"
},
"subdivName": {
"type": "search_as_you_type",
"analyzer": "hindi",
"max_shingle_size": 3
}
}
}
}
Data is inserted as below:
PUT test/_doc/1?refresh
{
"countryCd": "IN",
"langSetId": 1,
"subdivName": "Maharashtra"
}
PUT test/_doc/2?refresh
{
"countryCd": "IN",
"langSetId": 1,
"subdivName": "Madhya Pradesh"
}
PUT test/_doc/3?refresh
{
"countryCd": "IN",
"langSetId": 1,
"subdivName": "Gujarat"
}
PUT test/_doc/4?refresh
{
"countryCd": "IN",
"langSetId": 2,
"subdivName": "Maharashtra-Hindi"
}
PUT test/_doc/5?refresh
{
"countryCd": "IN",
"langSetId": 2,
"subdivName": "Madhya Pradesh-Hindi"
}
PUT test/_doc/6?refresh
{
"countryCd": "IN",
"langSetId": 2,
"subdivName": "Gujarat-Hindi"
}
PUT test/_doc/7?refresh
{
"countryCd": "US",
"langSetId": 1,
"subdivName": "Massachusetts"
}
Now if I use the below query and filter on the long field, I am getting the results correctly:
GET test/_search
{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "ma",
"type": "bool_prefix",
"fields": [
"subdivName"
]
}
},
"filter": [
{"term": {
"langSetId": 1
}}
]
}
}
}
}
}
}
However, if I try to filter on the text field, I am not getting any results:
GET test/_search
{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "ma",
"type": "bool_prefix",
"fields": [
"subdivName"
]
}
},
"filter": [
{"term": {
"countryCd":"IN"
}}
]
}
}
}
}
}
}
Why is adding the the text field in the filter clause not returning any results? Any help appreciated.
Thanks in advance!