Simple query string, avec l'opérateur pa défault "and" ne marche pas avec nested structure

Bonjour tout le monde, j'ai un mapping comme celui-ci qui applique nested structure

PUT test1
{
  "mappings": {
    "properties": {
      "nested_articles" : {
          "type" : "nested",
          "properties" : {
            "article_title" : {
              "properties" : {
                "en" : {
                  "type" : "keyword",
                  "fields" : {
                    "default" : {
                      "type" : "text",
                      "term_vector" : "with_positions_offsets",
                      "analyzer" : "english"
                    },
                    "exact" : {
                      "type" : "text",
                      "term_vector" : "with_positions_offsets",
                      "analyzer" : "english_exact"
                    }
                  },
                  "ignore_above" : 20
                }
              }
            },
            "content" : {
              "properties" : {
                "en" : {
                  "type" : "keyword",
                  "fields" : {
                    "default" : {
                      "type" : "text",
                      "term_vector" : "with_positions_offsets",
                      "analyzer" : "english"
                    },
                    "exact" : {
                      "type" : "text",
                      "term_vector" : "with_positions_offsets",
                      "analyzer" : "english_exact"
                    }
                  },
                  "ignore_above" : 20
                }
              }
            }
          }
        }
    }
  }
}

Comme vous voyez au-dessus, j'ai le champ nested_articles de type nested qui ont deux sous-champs articles_title et content. Chaque champ j'ai deux types de analyzer "default" (pour stemming) et "exact" (pour les recherches exacts). J'ajoute une document tout simple comme ça

PUT test1/_doc/1
{
  "nested_articles" : [
    {
      "article_title" : {
        "en": "John"
      },
      "content" : {
        "en": "Smith"
      }
    },
    {
      "article_title" : {
        "en": "foo"
      },
      "content" : {
        "en": "bar"
      }
    }
  ]
}

Le problème arrive quand j'applique simple_query_string

GET test1/_search
{
  "query": {
    "nested": {
      "path": "nested_articles",
      "query": {
        "simple_query_string": {
          "query": "smith bar",
          "fields": [
            "nested_articles.article_title.en.default^3",
            "nested_articles.content.en.default"
          ],
          "default_operator": "and"
        }
      }
    }
  }
}

Comme vous voyez, je cherche les documents qui ont les mots "smith" et le mots "bar", peu n'importe les champs mais ça donne aucun résultat. Par contre, si l'on cherche des mots qui viennent d'un même object (par ex, John Smith), ça donne le résultat.
Est-ce que vous avez solution pour lancer simple_query_string avec défautl "and" sur les nested types ?
Merci bcp tout le monde. Bon courage.

J'ai trouvé une solution c'est d'utiliser include_in_root pour créer une copie des nested objects au niveau de root. Par contre, avec cette solution, il garde pas la relation entre articles et contents. Dans notre cas d'utilisation, cette relation est très importante. Est-ce que vous avez des meilleurs solutions ? Merci beaucoup. Bon courage.

@dadoonet Je suis désolé de vous spam, mais ce cas d'utilisation est très important pour nous. Est-ce que vous pourriez nous aider svp?

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

As-tu trouvé une solution à ce problème ?