ElasticSearch is effective enough for the searches you are looking for; ElasticSearch had sustained the benchmarks I've done(100 user/sec about 3 days); but from persistence perspective you need to hold one step back, if one of the node went down then it need Hugh time to recover and again it depend on the cluster configuration(take keen decision).
It's able to hold good enough size payloads(2mb) , indexing 40+ fields, storing 40Million+ orders on 9 node cluster(nodes=27, replication factor=3)
It does not have to be special classes, but yes, you need something that will take the database in previous format and convert it to the current one.
The thing here is that you need to develop a process for writing and testing these scripts and discipline to never touch the testing and production databases by hand, but always by migration scripts.
Every time you need to do a change to the database, you write a script that will do it, whether in SQL or using your ORM layer, and commit it to your version control together with the changes that require the new schema. Then you have some control script that will upgrade the database by applying all the migration scripts that were not applied yet in a sequence.
And make sure you only ever modify any shared devel, test and QA environments by applying the scripts and rolling back to earlier version if they don't work, so you can be reasonably confident they will work as intended when you unleash them on the production.
New installation is simply done by applying all the scripts. After a time, you will might have hundreds of them and think that it is very inefficient, but don't fall into the trap of trying to optimize it. Installation is a one-time activity and keeping it reliable trumps making it fast.
@Doc Brown already linked Martin Fowler: Evolutionary Database Design and https://stackoverflow.com/questions/334059/agile-development-and-database-changes, and I'd add Alex Papadimoulis: Database Changes Done Right, which is shorter and has some examples.
As a decent example of tool implementing such process I suggest Alembic. It is based on the Python SQLAlchemy framework, but you can use it with other languages and frameworks if they don't have their own migration support. The Wikipedia page on Schema Migration lists more such tools.
Best Answer
Yes, "degree" is equal to "-arity"; second degree is binary, third degree is ternary, etc.