# v2 - Changements

**OpenSearch** amène plusieurs changements, vous devez donc vérifier la compatibilité de votre application avec ceux-ci.

{% embed url="<https://opensearch.org/docs/latest/breaking-changes/>" %}
Changements de rupture
{% endembed %}

## Remove mapping type

Il s'agit du principal changement induisant une rupture et il n'est pas spécifique à OpenSearch car il était déjà prévu par ElasticSearch avant le fork.

{% embed url="<https://www.elastic.co/guide/en/elasticsearch/reference/7.17/removal-of-types.html>" %}

Vous devez donc vous assurer que vos applications n'utilisent plus les paramètres "type".

Voici quelques solutions concernant les produits souvent utilisés avec les solutions élastiques et comment les configurer pour qu'ils fonctionnent avec OpenSearch 2.x

### Fluentbit

{% embed url="<https://docs.fluentbit.io/manual/pipeline/outputs/elasticsearch>" %}

Si le client est Fluentbit, la solution la plus simple est de définir le paramètre **Suppress\_Type\_Name** sur On.

Il est également possible de changer le plugin de sortie pour le plugin natif d'OpenSearch qui fait partie de Fluentbit depuis la version 1.9.

{% embed url="<https://docs.fluentbit.io/manual/pipeline/outputs/opensearch>" %}

L'article suivant peut s'avérer utile pour débuter avec Fluentbit et OpenSearch :

{% embed url="<https://opensearch.org/blog/technical/2022/03/getting-started-with-fluent-bit-and-opensearch/>" %}

### Fluentd

Si le client est Fluentd, c'est plus délicat. Il existe également **unsuppress\_type\_name** mais le plugin n'utilise ce paramètre que s'il détecte une version d'Elastic >= 7.

Nous devons donc ajouter d'autres paramètres :

* **verify\_es\_version\_at\_startup** = false - pour ne pas laisser le plugin détecter la version
* **default\_elasticsearch\_version** = '7'

{% embed url="<https://github.com/uken/fluent-plugin-elasticsearch>" %}

Voici par exemple les changements à effectuer sur les spécifications du plugin de sortie que nous utilisons dans Kubernetes.

<details>

<summary>Avant</summary>

{% code lineNumbers="true" %}

```yaml
 elasticsearch:
    flatten_hashes: true
    host: ostest.es.cegedim.cloud
    include_tag_key: true
    log_es_400_reason: true
    logstash_format: true
    logstash_prefix: myit-app-prod-frontend
    password:
      valueFrom:
        secretKeyRef:
          key: myit-app-prod_password
          name: it-cloud-eb.es.cegedim.cloud
    port: 443
    prefer_oj_serializer: true
    reconnect_on_error: true
    request_timeout: 30s
    scheme: https
    suppress_type_name: true
    user: myit-app-prod
```

{% endcode %}

</details>

<details>

<summary>Après</summary>

{% code lineNumbers="true" %}

```yaml
  elasticsearch:
    default_elasticsearch_version: "7"
    flatten_hashes: true
    host: ostest.es.cegedim.cloud
    include_tag_key: true
    log_es_400_reason: true
    logstash_format: true
    logstash_prefix: myit-app-prod-frontend
    password:
      valueFrom:
        secretKeyRef:
          key: myit-app-prod_password
          name: it-cloud-eb.es.cegedim.cloud
    port: 443
    prefer_oj_serializer: true
    reconnect_on_error: true
    request_timeout: 30s
    scheme: https
    suppress_type_name: true
    user: myit-app-prod
    verify_es_version_at_startup: false
```

{% endcode %}

</details>

Il y a aussi un plugin de sortie pour OpenSearch.

{% embed url="<https://docs.fluentd.org/output/opensearch>" %}

{% hint style="warning" %}
Le plugin OpenSearch n'est pas encore disponible dans le système de journalisation de Rancher.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://academy.cegedim.cloud/francais/bases-de-donnees/opensearch/opensearch-architecture/v2-changements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
