我正在尝试编写一个在两个不同字段中搜索字符串的查询。
一个来自根,一个作为嵌套对象的一部分。
我已经尝试过这两种方法,但都没有在两个领域产生匹配。
一个 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"
]
}
}
}
}
}
最佳答案
我认为您可以通过 bool query 实现这一目标
{
"query": {
"bool": {
"should": [
{
"query_string": {
"fields": [
"name"
],
"query": "searchTerm"
}
},
{
"nested": {
"path": "project",
"query": {
"query_string": {
"query": "searchTerm",
"fields": [
"project.projectName"
]
}
}
}
}
]
}
}
}
备注 - 如果您希望搜索词在两者上都匹配,您可以替换
should
与 must
关于elasticsearch - 查询两个字段,一个嵌套,一个在根上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33897834/