Hello!
I'm experimenting with index.max_terms_count. I've tried executing a terms query with over 65 536 terms in it, and I was surprised to see it actually gets executed, because I read the warning here:
Executing a Terms Query request with a lot of terms can be quite slow, as each additional term demands extra processing and memory. To safeguard against this, the maximum number of terms that can be used in a Terms Query both directly or through lookup has been limited to
65536
. This default maximum can be changed for a particular index with the index settingindex.max_terms_count
.
To test it further, I've tried setting index.max_terms_count to 2 or 3, and it still doesn't work the way I expect it to work. Can you please help me understand what am I doing (or understanding) wrong?
Steps:
-
Run ES using Docker:
1.1.docker pull docker.elastic.co/elasticsearch/elasticsearch:6.6.0
1.2. docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.6.0 -
Index document:
curl -X POST http://localhost:9200/twitter/_doc/1 -H 'Content-Type: application/json' -d '{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch",
"tags": ["foo", "bar", "sun", "clouds"]
}' -
Change settings:
curl -X PUT http://localhost:9200/twitter/_settings -H 'Content-Type: application/json' -d '{
"index" : {
"max_terms_count" : 2
}
}' -
Verify settings are applied:
curl -X GET http://localhost:9200/twitter/_settings
-
Perform a search:
curl -X POST 'http://localhost:9200/twitter/_search?pretty' -H 'Content-Type: application/json' -d '{
"query": {
"terms" : { "tags" : ["sun", "cloudy", "yo", "hi", "hello"]}
}
}'