Er, I've answered some of your Qs before, and this in a similar style to your previous Qs:
How to search for text within text?
How to increase the speed of response?
Increased speed elasticsearch
What are the requirements?
What is the reason for not reading from the HDD storage disk?
What is the largest size that one node can hold?
What is the fastest storage type suitable for elasticsaerch than the HDD?
Now maybe you are involved in several different elasticsearch projects, but the style of each thread is almost the same - you ask pretty vague questions, often things are "big" and you want "fast", clarifications betray a lack of any deep understanding. Thats generally fine, this is a community forum, but ...
In most recent of these I suggested you take a step back and start writing down actual requirements.
I am not at all convinced you really need to search for your "long fields of up to 2000 characters" by term, I'd take some convincing thats a good architecture for whatever problem your solution might solve. But there's nothing about your various problem descriptions that suggest any sort of solution architect or designer has been involved, and this is directly leading to the number and content of the questions you have posted. I fear the "solution" you will end up with will not be fit for purpose due to this.
Here, you seem not to have completely appreciated what ignore_above does - default is 256 so every keyword field longer than that would be partially ignored in search contexts. But if you really want your very long strings to be matched to every character, i.e. they might be different in the 1st char or the 2999th char, and every one in between, then that has a cost. Using hashes as suggested by Christian (who has also answered a bunch of your Qs) is a really good idea.
There's a little discussion about ignore_above here:
Philosophy behind ignore_above mapping parameter
Note what the elasticsearch documentation says for keyword types:
keyword-field-type is used for structured content such as IDs, email addresses, hostnames, status codes, zip codes, or tags.
Does your 3000 long characters really seem to fit?