I'm trying to collapse on a field name field1
across different indexes. All indexes but one have the same field name field1
and one index has a different field name field2
. So, in that index, I'm defining an alias field field1
which points to field2
. My hope is to be able to collapse on field1
across all indexes, but apparently this doesn't work.
Here is how to simply reproduce the problem I'm facing. First, we create two indexes:
PUT index1
{
"settings": {
"index.number_of_shards": 1
},
"mappings": {
"properties": {
"field1": {
"type": "keyword"
}
}
}
}
PUT index2
{
"settings": {
"index.number_of_shards": 1
},
"mappings": {
"properties": {
"field2": {
"type": "keyword"
},
"field1": {
"type": "alias",
"path": "field2"
}
}
}
}
Then we index one document in each index
PUT index1/_doc/1
{
"field1": "test1"
}
PUT index2/_doc/1
{
"field2": "test2"
}
And finally I'm trying to collapse on the "common" field
POST index*/_search
{
"collapse": {
"field": "field1",
"inner_hits": {
"name": "hits"
}
}
}
And I get this:
{
"error": {
"root_cause": [],
"type": "search_phase_execution_exception",
"reason": "",
"phase": "fetch",
"grouped": true,
"failed_shards": [],
"caused_by": {
"type": "illegal_argument_exception",
"reason": "collapse field differ across shards [field1] != [field2]"
}
},
"status": 400
}
I could not find anything in the documentation or in Github issues that would explain this.
Given this PR, one would think that this is indeed possible, but apparently I'm missing something.
I'd appreciate if anyone could shed some light on this.
Thank you so much!