# Recherche multi index et filtre sur l'index pas l'alias

**URL:** <https://discuss.elastic.co/t/recherche-multi-index-et-filtre-sur-lindex-pas-lalias/73778>\
**Category:** Discussions en français\
**Created:** [February 3, 2017, 1:50am UTC](https://discuss.elastic.co/t/recherche-multi-index-et-filtre-sur-lindex-pas-lalias/73778 "2017-02-03T01:50:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)\
**Post date:** [February 3, 2017, 1:50am UTC](https://discuss.elastic.co/t/recherche-multi-index-et-filtre-sur-lindex-pas-lalias/73778/1 "2017-02-03T01:50:02Z")

</div>

Bonjour,

J'ai des documents comme suit:

> index: index\_banane\_1 (alias index\_banane)  
> type: gros\_michel  
> id: 1  
> name: tomate  
> status: private

> index: index\_ananas\_1 (alias index\_ananas)  
> type: gros\_michel  
> id: 1  
> name: tomate  
> status: public

(Le nom des index, type et champs ont été modifié pour des raisons de simplification et mettre en avant le problème, en réalité le jeu de donnée est beaucoup plus complexe.)

Je veux rechercher sur tous les index ce qui fait une requête du genre:

```
/index_banane,index_ananas/_search    
{
"query": {
"bool": {
  "must": [
    {
      "term": {
        "_index": "index_banane"
      }
    },
    {
      "term": {
        "_type": "gros_michel"
      }
    },
    {
      "bool": {
        "must": [
          {
            "bool": {
              "should": [
                {
                  "query_string": {
                    "fields": [
                      "name^10",
                      "name.*^3"
                    ],
                    "default_operator": "AND",
                    "analyzer": "romaji_analyzer",
                    "query": "tom*"
                  }
                },
                ...
              ]
            }
          }
        ]
      }
    },
    {
      "term": {
        "_index": "index_ananas"
      }
    },
    {
      "term": {
        "_type": "gros_michel"
      }
    },
    {
      "bool": {
        "must": [
          {
            "bool": {
              "should": [
                {
                  "query_string": {
                    "fields": [
                      "name^10",
                      "name.*^3"
                    ],
                    "default_operator": "AND",
                    "analyzer": "romaji_analyzer",
                    "query": "tom*"
                  }
                },
                ...
              ]
            }
          }
        ]
      }
    }
  ]
}
}
}

```

Sauf que ça ne match sur aucun document car mes index sont respectivement index\_banane\_1 et index\_ananas\_1 et que mon appli ne connais que les alias. 😢

Le problème est que si je ne filtre pas sur l'index certains documents vont matcher alors qu'ils devraient pas.

J'ai essayé "prefix" et "wildcard" mais ils retournent tous les deux une erreur si c'est sur le champ \_index.

```
{
  "query": {
    "wildcard": {
    "_index": {
    "value": "index_banane_*"
  }
}
}}

```

Si quelqu'un peux m'orienter vers une meilleur solution je suis preneur.

Merci d'avance.

---

<div class="post-metadata">

**Author:** ![tanguy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tanguy/32/6030_2.png) [@tanguy](https://discuss.elastic.co/u/tanguy)\
**Post date:** [February 3, 2017, 9:17am UTC](https://discuss.elastic.co/t/recherche-multi-index-et-filtre-sur-lindex-pas-lalias/73778/2 "2017-02-03T09:17:42Z")

</div>

Bonjour,

Il est possible de préciser plusieurs indices (ou alias) ainsi que plusieurs types lors d'une recherche. Tu peux donc faire quelques chose comme ca:

GET / index\_banane,index\_ananas/gros\_michel,petit\_michel/\_search  
{ "query": { "query\_string": ... query string sur le champ name...}

A noter que les wildcards sont aussi acceptés, il est aussi possible d'avoir:  
GET / index\__/_\_michel/\_search

---

<div class="post-metadata">

**Author:** ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)\
**Post date:** [February 3, 2017, 11:09am UTC](https://discuss.elastic.co/t/recherche-multi-index-et-filtre-sur-lindex-pas-lalias/73778/3 "2017-02-03T11:09:16Z")

</div>

Merci pour la réponse mais comme écrit dans mon premier post dans la première requête (la partie qui commence par /index\_banane,index\_ananas/\_search  
{)  
il y'a déjà plusieurs indices, soit je comprends mal ta réponse soit ma question n'est pas claire.

Je ne cherche pas a faire une recherche sur plusieurs incides, je sais déjà comment faire mais plutôt filtrer sur l'index. Si on lit que le début du titre en effet on peux comprendre que je veux faire un recherche sur plusieurs indices mais dans la suite du titre il est écrit filtrer sur l'index.  
J'ai essayé d'expliquer comme je pouvais désolé encore pour mon exemple parler de gros michel peux porter a confusion.

Je requête sur plusieurs index et je voudrais filtrer à l’intérieur de mon "should" sur l'index sachant que "term" ne fonctionne pas car je ne connais que le nom de l'alias.

En tapant ce texte je viens de penser que Je pourrais faire un must avec une query string pour mes champs et une autre pour le champ \_index.

Merci @tanguy pour ta réponse qui m'a aidé a trouver une solution, si tu passes a Tokyo je te paye une bière!

Cheers!!!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [March 3, 2017, 11:09am UTC](https://discuss.elastic.co/t/recherche-multi-index-et-filtre-sur-lindex-pas-lalias/73778/4 "2017-03-03T11:09:59Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
