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.