user11101096
user11101096

Reputation:

Where should I configure max_result_window index setting?

I'm trying to add to my elasticsearch.yml

index.max_result_window: 10000

But the problem is it doesn't like me adding index. in the configuration (it results in an error), this was working in elastica version 2.X, but now in 6.X it doesn't seem to work. Any idea how to configure indexes in recent elastica versions? I can't seem to find an answer to this.

Upvotes: 23

Views: 40320

Answers (2)

Cassiano
Cassiano

Reputation: 572

For elastica I think this is the solution:

// Load index
$elasticaIndex = $elasticaClient->getIndex('twitter');

// Create the index new
$elasticaIndex->create(
    array(
        'number_of_shards' => 4,
        'number_of_replicas' => 1,
        'analysis' => array(
            'analyzer' => array(
                'default_index' => array(
                    'type' => 'custom',
                    'tokenizer' => 'standard',
                    'filter' => array('lowercase', 'mySnowball')
                ),
                'default_search' => array(
                    'type' => 'custom',
                    'tokenizer' => 'standard',
                    'filter' => array('standard', 'lowercase', 'mySnowball')
                )
            ),
            'filter' => array(
                'mySnowball' => array(
                    'type' => 'snowball',
                    'language' => 'German'
                )
            )
        ),
        'max_result_window' => 10000
    ),
    true
);

Upvotes: 0

James Pittiglio
James Pittiglio

Reputation: 641

The max_result_window is a dynamic index level setting, not node specific. The default is 10,000, so if that's the value you'd like to set, there should be no need.

You can adjust it by updating either a specific index settings or globally across all existing indices:

PUT _settings
{
  "index.max_result_window": 11000
}

The above would update all existing indices. To have it take effect on future indices, you'd need an index template that targets specific index patterns (or just * for global) - as an example:

PUT _template/example
{
  "index_patterns": ["settings_test*"],
  "settings": {
    "index.max_result_window": 12000
  }
}

PUT settings_test

The above would yield the following:

GET settings_test
...

{
  "settings_test" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        ...
        "max_result_window" : "12000",
        ...
      }
    }
  }
}

Ref: https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html

Upvotes: 33

Related Questions