-
-
Save lukas-vlcek/5143799 to your computer and use it in GitHub Desktop.
| // create an index with an analyzer "myindex" | |
| curl -X PUT localhost:9200/myindex -d ' | |
| { | |
| "settings" : {` | |
| "index":{ | |
| "number_of_replicas":0, | |
| "number_of_shards":1, | |
| "analysis":{ | |
| "analyzer":{ | |
| "first":{ | |
| "type":"whitespace" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }' | |
| // verify analyzers for "myindex" | |
| curl -XGET 'http://localhost:9200/_cluster/state?pretty&filter_nodes=true&filter_routing_table=true&filter_indices=myindex' | |
| # { | |
| # "cluster_name" : "elasticsearch", | |
| # "blocks" : { }, | |
| # "metadata" : { | |
| # "templates" : { }, | |
| # "indices" : { | |
| # "myindex" : { | |
| # "state" : "open", | |
| # "settings" : { | |
| # "index.number_of_replicas" : "0", | |
| # "index.number_of_shards" : "1", | |
| # "index.analysis.analyzer.first.type" : "whitespace", | |
| # "index.version.created" : "191299" | |
| # }, | |
| # "mappings" : { }, | |
| # "aliases" : [ ] | |
| # } | |
| # } | |
| # } | |
| # } | |
| // try to add a new analyzer | |
| curl -XPUT 'localhost:9200/myindex/_settings' -d '{ | |
| "analysis" : { | |
| "analyzer":{ | |
| "second":{ | |
| "type":"custom", | |
| "tokenizer":"whitespace", | |
| "filter":["lowercase"] | |
| } | |
| } | |
| } | |
| }' | |
| # {"ok":true} | |
| // but in fact index setting is not modified - the following is found in the log | |
| [WARN ][cluster.metadata ] [Captain Omen] [myindex] ignoring non dynamic index level settings for open indices: [index.analysis.analyzer.second.type, index.analysis.analyzer.second.tokenizer, index.analysis.analyzer.second.filter.0] | |
| // close the index | |
| curl -XPOST 'localhost:9200/myindex/_close' | |
| # {"ok":true,"acknowledged":true} | |
| // we can verify index is closed | |
| curl -XGET 'http://localhost:9200/_cluster/state?pretty&filter_nodes=true&filter_routing_table=true&filter_indices=myindex' | |
| # { | |
| # "cluster_name" : "elasticsearch", | |
| # "blocks" : { | |
| # "indices" : { | |
| # "myindex" : { | |
| # "4" : { | |
| # "description" : "index closed", // <--- myindex is closed | |
| # "retryable" : false, | |
| # "levels" : [ "read", "write" ] | |
| # } | |
| # } | |
| # } | |
| # }, | |
| # "metadata" : { | |
| # "templates" : { }, | |
| # "indices" : { | |
| # "myindex" : { | |
| # "state" : "close", // <--- state: close | |
| # "settings" : { | |
| # "index.number_of_replicas" : "0", | |
| # "index.number_of_shards" : "1", | |
| # "index.analysis.analyzer.first.type" : "whitespace", | |
| # "index.version.created" : "191299" | |
| # }, | |
| # "mappings" : { }, | |
| # "aliases" : [ ] | |
| # } | |
| # } | |
| # } | |
| # } | |
| // try to add a new analyzer again | |
| curl -XPUT 'localhost:9200/myindex/_settings' -d '{ | |
| "analysis" : { | |
| "analyzer":{ | |
| "second":{ | |
| "type":"custom", | |
| "tokenizer":"whitespace", | |
| "filter":["lowercase"] | |
| } | |
| } | |
| } | |
| }' | |
| # {"ok":true} | |
| // we can add a new analyzer now | |
| curl -XGET 'http://localhost:9200/_cluster/state?pretty&filter_nodes=true&filter_routing_table=true&filter_indices=myindex' | |
| # { | |
| # "cluster_name" : "elasticsearch", | |
| # "blocks" : { | |
| # "indices" : { | |
| # "myindex" : { | |
| # "4" : { | |
| # "description" : "index closed", | |
| # "retryable" : false, | |
| # "levels" : [ "read", "write" ] | |
| # } | |
| # } | |
| # } | |
| # }, | |
| # "metadata" : { | |
| # "templates" : { }, | |
| # "indices" : { | |
| # "myindex" : { | |
| # "state" : "close", | |
| # "settings" : { | |
| # "index.number_of_replicas" : "0", | |
| # "index.number_of_shards" : "1", | |
| # "index.analysis.analyzer.first.type" : "whitespace", | |
| # "index.version.created" : "191299", | |
| # "index.analysis.analyzer.second.tokenizer" : "whitespace", | |
| # "index.analysis.analyzer.second.type" : "custom", | |
| # "index.analysis.analyzer.second.filter.0" : "lowercase" | |
| # }, | |
| # "mappings" : { }, | |
| # "aliases" : [ ] | |
| # } | |
| # } | |
| # } | |
| # } | |
| // open the index now | |
| curl -XPOST 'localhost:9200/myindex/_open' | |
| # {"ok":true,"acknowledged":true} | |
| // now everything seems to be ok | |
| curl -XGET 'http://localhost:9200/_cluster/state?pretty&filter_nodes=true&filter_routing_table=true&filter_indices=myindex' | |
| # { | |
| # "cluster_name" : "elasticsearch", | |
| # "blocks" : { }, | |
| # "metadata" : { | |
| # "templates" : { }, | |
| # "indices" : { | |
| # "myindex" : { | |
| # "state" : "open", | |
| # "settings" : { | |
| # "index.number_of_replicas" : "0", | |
| # "index.number_of_shards" : "1", | |
| # "index.analysis.analyzer.first.type" : "whitespace", | |
| # "index.version.created" : "191299", | |
| # "index.analysis.analyzer.second.tokenizer" : "whitespace", | |
| # "index.analysis.analyzer.second.type" : "custom", | |
| # "index.analysis.analyzer.second.filter.0" : "lowercase" | |
| # }, | |
| # "mappings" : { }, | |
| # "aliases" : [ ] | |
| # } | |
| # } | |
| # } | |
| # } |
We are trying to define few analyzers to elastic index. Service throwing following error.
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Can't update non dynamic settings [[index.analysis.analyzer.whitespace_analyzer.filter, index.analysis.analyzer.whitespace_analyzer.tokenizer, index.analysis.filter.autocomplete_filter.token_chars, index.analysis.filter.autocomplete_filter.min_gram, index.analysis.analyzer.whitespace_analyzer.type, index.analysis.analyzer.autocomplete_analyzer.type, index.analysis.analyzer.autocomplete_analyzer.tokenizer, index.analysis.filter.autocomplete_filter.type, index.analysis.analyzer.autocomplete_analyzer.filter, index.analysis.filter.autocomplete_filter.max_gram]] for open indices [[nse/aZsP4c90QwWylVhv2eA84g]]"}],"type":"illegal_argument_exception","reason":"Can't update non dynamic settings [[index.analysis.analyzer.whitespace_analyzer.filter, index.analysis.analyzer.whitespace_analyzer.tokenizer, index.analysis.filter.autocomplete_filter.token_chars, index.analysis.filter.autocomplete_filter.min_gram, index.analysis.analyzer.whitespace_analyzer.type, index.analysis.analyzer.autocomplete_analyzer.type, index.analysis.analyzer.autocomplete_analyzer.tokenizer, index.analysis.filter.autocomplete_filter.type, index.analysis.analyzer.autocomplete_analyzer.filter, index.analysis.filter.autocomplete_filter.max_gram]] for open indices [[nse/aZsP4c90QwWylVhv2eA84g]]"},"status":400}
He nitingadekar
Opening and closing indices on AWS elasticsearch is not supported.
https://docs.aws.amazon.com/en_pv/elasticsearch-service/latest/developerguide/aes-supported-es-operations.html
As an update on opening and closing indicies on AWS ES/OpenSearch, this is supported as of V7.4
But we still need to reindex. such settings doesnt apply to existing data :(
Hi r-martins,
Please share your experience while recreating the analyzer in AWS elasticsearch, and more details about why open and close index does not work for AWS ES. I have my prod infra running and need to verify if recreating the index would help.
Below is the query raised by my development team.