我正在运行针对弹性搜索的查询,但返回的结果是错误的。我的想法是,我可以使用单个查询来检查一系列字段。但是,当我传递以下查询时,将返回没有包含阵容的项目。
query: {
bool: {
must: [
{match:{"lineup.name":{query:"The 1975"}}}
]
}
}
对象是看起来像的事件。
{
title: 'Glastonbury'
country: 'UK',
lineup: [
{
name: 'The 1975',
genre: 'Indie',
headliner: false
}
]
},
{
title: 'Reading'
country: 'UK',
lineup: [
{
name: 'The Strokes',
genre: 'Indie',
headliner: true
}
]
}
在我的情况下,返回这两个事件。
答案 0 :(得分:3)
您需要使用match_phrase查询,match
查询正在寻找 或 1975 并找到 in 笔画,它会为你提供结果。
尝试
{
"query": {
"bool": {
"must": [
{
"match": {
"lineup.name": {
"query": "The 1975",
"type": "phrase"
}
}
}
]
}
}
}