J'ai un document d'utilisateur avec un champ appelé expériences qui est un tableau d'objets, comme:ElasticSearch connecter plage et terme même élément du tableau
{
"experiences": [
{
"end_date": "2017-03-02",
"is_valid": false
},
{
"end_date": "2015-03-02",
"is_valid": true
}
]
}
Avec ce document, je dois rechercher des utilisateurs où fin date est dans l'année dernière et is_valid est vrai. A cette époque, j'ai une requête -> bool et j'ajouter deux doivent là, une gamme pour la date_fin et un terme pour la is_valid.
{
"query": {
"bool": {
"must": {
"term": {
"experiences.is_valid": true
},
"range": {
"experiences.end_date": {
"gte": "now-1y",
"lte": "now"
}
},
}
}
}
}
Le résultat est que cet utilisateur est sélectionné parce qu'il a un date_fin l'année dernière (la première exp.) Et une autre exp. avec is_valid true. Bien sûr, ce n'est pas ce dont j'ai besoin, car j'ai besoin que end_date et is_valid soit référencé au même objet, mais comment pouvons-nous faire cela sur Elasticsearch?
Mapping:
"experiences": {
"properties": {
"comment": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"end_date": {
"type": "date"
},
"id": {
"type": "long"
},
"is_valid": {
"type": "boolean"
},
"start_date": {
"type": "date"
}
}
}
Partager le mappage de votre index .. 'GET index/type/_mapping'. Je suppose que l'expérience est de type 'object'. – Richa
Ajouté, mais il n'y a pas de "type" pour les expériences ... – Grork
La valeur par défaut est "Objet" .. :) – Richa