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.