create([
'index' => 'shops',
'body' => [
'settings' => [
'max_result_window' => 5000000,
'analysis' => [
'filter' => [
'word_delimiter' => [
'type' => 'word_delimiter',
'split_on_numerics' => false,
'split_on_case_change' => true,
'generate_word_parts' => true,
'generate_number_parts' => true,
'catenate_all' => true,
'preserve_original' => true,
'catenate_numbers' => true
],
'trigrams' => [
'type' => 'ngram',
'min_gram' => 3,
'max_gram' => 4,
]
],
'char_filter' => [
'replace' => [
'type' => 'mapping',
'mappings' => ['&=> and ']
]
],
'analyzer' => [
'reuters' => [
'type' => 'custom',
'char_filter' => ['html_strip', 'replace'],
'tokenizer' => 'whitespace',
'filter' => ['lowercase', 'word_delimiter', 'trigrams']
]
]
]
],
'mappings' => [
'_source' => ['enabled' => true],
'properties' => [
'id' => ['type' => 'integer'],
'user_id' => ['type' => 'integer'],
'published_at' => ['type' => 'date'],
'title' => ['type' => 'text'],
'slug' => ['type' => 'keyword'],
'content' => ['type' => 'text'],
'price' => ['type' => 'integer'],
'status' => ['type' => 'keyword'],
'photoCounts' => ['type' => 'integer'],
'photos' => ['type' => 'keyword'],
'category' => ['type' => 'keyword'],
'categories' => ['type' => 'integer'],
'region' => ['type' => 'keyword'],
'regions' => ['type' => 'integer'],
'values' => [
'type' => 'nested',
'properties' => [
'attribute' => ['type' => 'integer'],
'value_string' => ['type' => 'keyword'],
'value_int' => ['type' => 'integer']
]
]
]
]
]
])