Elasticsearch查询嵌套对象无结果
问题描述:
我创建了Elasticsearch索引,其中一个嵌套字段的映射如下。Elasticsearch查询嵌套对象无结果
"groups": {
"type": "nested",
"properties": {
"name": {
"type": "text"
},
"value": {
"type": "text"
}
}
}
论ES版本的详细信息,它的5.0和我使用Python官方客户端elasticsearch-py在客户端。我想根据它的值来查询这个嵌套字段。
可以说有另一个字段叫做名称这是一个文本类型字段。我想查找以A开头并落入指定组的所有名称。
一些样本数据,
组 - HR(名称= HR,值=小时),市场营销(名称=营销,价值=市场营销) 名称 - 安德鲁,阿尔法,巴里,约翰
安德鲁Alpha属于HR组。
在此基础上我想查询
{
'query': {
'bool': {
'must': [{
'match_phrase_prefix': {
'title': 'A'
}
}]
},
'nested': {
'path': 'groups',
'query': {
'bool': {
'must': [{
'match': {
'groups.value': 'hr'
}
}]
}
}
}
}
}
对于此查询我提到ES文档,但此查询不返回任何东西。如果有人能指出这个查询或映射本身有什么问题,那将是非常棒的。
答
就快,你只需要移动bool/must
查询里面的nested
查询:
{
'query': {
'bool': {
'must': [
{
'match_phrase_prefix': {
'title': 'A'
}
},
{
'nested': {
'path': 'groups',
'query': {
'bool': {
'must': [{
'match': {
'groups.value': 'hr'
}
}]
}
}
}
}
]
}
}
}
我需要更新我的映射来得到想要的结果? –
它的工作。谢了哥们!!答案被接受,但是SO现在正在阻止我!所以在允许的时候会这样做。 –
没有你的映射是好的,只是查询格式不正确 – Val