我试图编写一个查询,在两个不同的字段中搜索字符串。 一个根,一个作为嵌套对象的一部分。
我已尝试过这两种方法,但两种方法都没有匹配。
query_string
搜索根
这会导致仅name
注意:如果我没有指定字段,它会搜索所有字段,包括我想要的字段。
{
"query": {
"query_string": {
"query": "searchterm",
"fields": ["name", "project.projectName"]
}
}
}
query_string
搜索嵌套对象
这会导致仅project.projectName
{
"query": {
"nested": {
"path": "project",
"query": {
"query_string": {
"query": "searchTerm",
"fields": [
"name",
"project.projectName"
]
}
}
}
}
}
答案 0 :(得分:4)
我认为你可以通过bool query
实现这一目标{
"query": {
"bool": {
"should": [
{
"query_string": {
"fields": [
"name"
],
"query": "searchTerm"
}
},
{
"nested": {
"path": "project",
"query": {
"query_string": {
"query": "searchTerm",
"fields": [
"project.projectName"
]
}
}
}
}
]
}
}
}
注意 - 如果您希望searchterm与两者匹配,可以将should
替换为must