fos_elastica: clients: default: host: '%env(ELASTICSEARCH_HOST)%' port: '%env(int:ELASTICSEARCH_PORT)%' username: '%env(ELASTICSEARCH_USERNAME)%' password: '%env(ELASTICSEARCH_PASSWORD)%' indexes: # create the index by running php bin/console fos:elastica:populate articles: index_name: '%env(ELASTICSEARCH_INDEX_NAME)%' settings: index: # Increase refresh interval for better write performance refresh_interval: "5s" # Optimize indexing number_of_shards: 1 number_of_replicas: 0 # Add query cache settings for faster repeated searches queries: cache: enabled: true # Optimize for search performance max_result_window: 10000 analysis: normalizer: topic_norm: type: custom filter: [ lowercase, asciifolding ] # case & accent insensitive analyzer: custom_analyzer: type: custom tokenizer: standard filter: [ lowercase, snowball, asciifolding ] indexable_callback: [ 'App\Util\IndexableArticleChecker', 'isIndexable' ] properties: createdAt: type: keyword title: type: text analyzer: custom_analyzer # Add term_vector for faster phrase queries term_vector: with_positions_offsets copy_to: search_combined content: type: text analyzer: custom_analyzer # Don't store norms for content to save space and improve speed norms: false copy_to: search_combined summary: type: text analyzer: custom_analyzer term_vector: with_positions_offsets copy_to: search_combined slug: type: keyword # Enable doc_values for faster sorting/aggregations doc_values: true pubkey: type: keyword topics: type: keyword normalizer: topic_norm search_combined: type: text analyzer: standard persistence: driver: orm model: App\Entity\Article provider: ~ listener: ~ finder: ~