It ought to use doc_values, yes. "strong": false and "doc_values": true should be the default when you have not_analyzed strings. I'd explicitly disable fielddata just for paranoia's sake with the mapping here.
I've tried to reduce to a simple test case however I'm unable to reproduce from scratch. I'll update this issue if I can determine what if anything I'm doing to seems to trigger this behavior.
So, I think I may have an inkling as to what is going on. In my index I have multiple types not all of which contain the same data or mappings. In the above example the mapping for that field only exists on one type out of 3 in the index. If I remove all documents not of the type with the field I'm aggregating on then the fielddata won't be loaded, but if there is data for the other types then there will be fielddata loaded.
I'm thinking ES is creating fielddata for the other types for the field even though the field doesn't exist on the other types. Something like a marker to indicate "nothing here, move along". Can any of the dev's confirm my running assumption?
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.