@gswartz, welcome to the community!
ignore_above is only applicable to keyword fields.
Elasticsearch tries to help one out by creating a mapping if one isn't defined but it doesn't always get it just the way you want it 
If you want both text and keyword, you can use a multi-field mapping as follows:
PUT /notes-index/_mapping
{
"properties": {
"notes": {
"type": "text",
"fields": {
"text.keyword": {
"type": "keyword"
"ignore_above": 5000
}
}
}
}
I wouldn't go as far as 5000 though, because the keyword type treats each entry as an individual, unique term. The default is 256.
There is an important note at the bottom of the docs that I'l reiterate here:
" The value for ignore_above is the character count , but Lucene counts bytes. If you use UTF-8 text with many non-ASCII characters, you may want to set the limit to 32766 / 4 = 8191 since UTF-8 characters may occupy at most 4 bytes."
If you want to do a full text search and plan to use an analyzer, I suggest you remap the field as text only. There's a great explanation and how to use the analyzers here.
I hope that helps.