Elasticsearch mevcut indexin yenilenmesi sırasında sistemde kesinti olmaması için bize Index Alias özelliğini sunar. Uygulamamız index kullanırken, aslında gerçek index yerine alias indexi kullanıyor. Bu bildiğimiz symlink özelliğidir. İndexi yenilediğimiz zaman, index alias yeni indexe bağlanıyor ve eski index siliniyor. Bu sayede index alias uygulamamıza her zaman veri sağlıyor. Örneğimiz ayrıca FOSElasticaBundle kullanıyor.


Ana faydalar



Komutlar


# List all indexes
$ curl 127.0.0.1:9200/_cat/indices?v

# Recreate new index with new set of data
$ bin/console fos:elastica:populate --index=country

config.yml


Aşağıdaki konfigürasyon ayarlarında index alias özelliğini kullanabilmek için use_alias: true girdisini kullanıyoruz. Çalıştığımız ortama göre index alias ismi değişecek yani, country_dev (app_dev.php/DEV), country_test (app_test.php/TEST), country (app.php/PROD) vs olacak. Diğer konfigürasyon ayarlarını şu an için önemsemeyin. Biz örneğimizde DEV ortamını kullanıyoruz bu nedenle index alias ismi country_dev olacak.


fos_elastica:
clients:
default: { host: 127.0.0.1, port: 9200 }
indexes:
country:
client: default
use_alias: true
index_name: country_%kernel.environment%
types:
country:
properties:
id:
type: integer
name:
type: text
abbreviation:
type: text
persistence:
driver: orm
model: AppBundle\Entity\Country
finder: ~
provider: ~
listener: ~

Sistemde index yaratma işlemini daha yapmadık bu nedenle terminalde aşağıdaki sonucu alacağız.


$ curl 127.0.0.1:9200/_cat/indices?v

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

Test


İndex'in ilk kez yaratılması


$ bin/console fos:elastica:populate --index=country # "country" is the index name from mapping above

Resetting country
12/12 [============================] 100%
Populating country/country
Refreshing country

İndex listesi


Aşağıda'da gördüğümüz gibi gerçek index country_dev_2018-02-24-093619 olarak isimlendirilmiş durumdadır ve bizim country_dev index alias tarafından kullanılacaktır.


$ curl 127.0.0.1:9200/_cat/indices?v

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open country_dev_2018-02-24-093619 pLjMusDPQcGjC0EP56AxNQ 5 1 12 0 18.7kb 18.7kb


Yeniden indexleme


$ bin/console fos:elastica:populate --index=country # "country" is the index name from mapping above

Resetting country
12/12 [============================] 100%
Populating country/country
Refreshing country

İndex listesi


Aşağıda'da gördüğümüz gibi eski country_dev_2018-02-24-093619 index, yeni country_dev_2018-02-24-101126 ile değiştirilmiş durumda.


$ curl 127.0.0.1:9200/_cat/indices?v

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open country_dev_2018-02-24-101126 -HJQb-yjRhCZqpIR6tGL4w 5 1 12 0 4.6kb 4.6kb