J'ai un tas de documents de recherche élastiques qui contiennent des informations sur les annonces d'emplois. J'essaie d'agréger le champ attributes.Title
pour extraire le nombre d'instances "expérience" de l'offre d'emploi. par exemple. Junior, Senior, Lead, etc. Au lieu de cela ce que je reçois sont des seaux qui correspondent au titre dans son ensemble au lieu de chaque le mot le champ de titre. par exemple. "Junior Java Developer", "Senior .NET Analyst", etc.ElasticSearch - agrégation de termes divisée par des espaces
Comment puis-je dire à la recherche élastique de fractionner l'agrégation en fonction de chaque mot du titre, par opposition à la correspondance avec la valeur de l'ensemble du champ. Je souhaiterais plus tard étendre la requête pour extraire également le «niveau de compétence» et le «rôle», mais il devrait également être correct si les compartiments contiennent tous les mots dans le champ tant qu'ils sont divisés en compartiments séparés .
requête actuelle:
GET /jobs/_search
{
"query": {
"simple_query_string" : {
"query": "Java",
"fields": ["attributes.Title"]
}
},
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "attributes.Title.keyword"
}
}
}
}
sortie non désiré:
{
...
"hits": {
"total": 63,
"max_score": 0,
"hits": []
},
"aggregations": {
"group_by_state": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 14,
"buckets": [{
"key": "Junior Java Tester",
"doc_count": 6
},{
"key": "Senior Java Lead",
"doc_count": 6
},{
"key": "Intern Java Tester",
"doc_count": 5
},
...
]
}
}
}
souhaité Sortie:
{
...
"hits": {
"total": 63,
"max_score": 0,
"hits": []
},
"aggregations": {
"group_by_state": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 14,
"buckets": [{
"key": "Junior",
"doc_count": 12
},{
"key": "Senior",
"doc_count": 8
},{
"key": "Tester",
"doc_count": 5
},{
"key": "Intern",
"doc_count": 5
},{
"key": "Analyst",
"doc_count": 5
},
...
]
}
}
}