我在我的Elasticsearch映射中有一个自定义定义,其中我使用嵌套对象进行搜索。我希望添加一个过滤器以仅搜索特定的ID。当我尝试使用过滤器时,它不起作用。 这是我的搜索查询:
{
"_source":"false",
"query":{
"nested":{
"path":"custom",
"query":{
"multi_match":{
"fields":["custom.text"],
"query" : "foo bar whatever",
"fuzziness":"AUTO"
}
},
"filter": {
"term" : {"Id":"100", "200"}
},
"inner_hits":{
"highlight":{
"fields":{
"custom.start_time":{}
}
}
}
}
}
}
映射:
{
"mappings":{
"properties":{
"Id":{
"type":"integer"
},
"custom":{
"type":"nested",
"properties":{
"text":{
"type":"text"
},
"start_time":{
"type":"text"
},
"end_time":{
"type":"text"
}
}
}
}
}
}
答案 0 :(得分:2)
好的,您混合了嵌套和非嵌套。这是一个适合您的查询:
{
"_source": "false",
"query": {
"bool": {
"filter": [
{
"terms": {
"Id": [
"100",
"200"
]
}
},
{
"nested": {
"path": "custom",
"query": {
"multi_match": {
"fields": [
"custom.text"
],
"query": "foo bar whatever",
"fuzziness": "AUTO"
}
},
"inner_hits": {
"highlight": {
"fields": {
"custom.start_time": {}
}
}
}
}
}
]
}
}
}