我有此搜索查询,用于在根标题和描述中找到查询搜索词“ red dog”,并且还匹配嵌套的注释文档。
GET /_all/video/_search { "query":{ "bool":{ "should":[ { "multi_match":{ "query":"red dog", "fields":[ "Title", "Description" ], "type": "cross_fields", "operator":"and" } }, { "nested":{ "path":"Comments", "query":{ "multi_match":{ "query":"red dog", "fields":[ "Comments.Description", "Comments.Description.folded" ], "type": "cross_fields", "operator":"and" } } } } ] } } }
对我来说不幸的是,当我将注释保留到ElasticSearch时,注释有时为空,是否可以执行某种“如果文档存在则包含”条件?
更新资料
我仍然遇到相同的错误
[nested] failed to find nested object under path [Comments]
当我尝试使用存在查询时
GET /_all/video/_search { "query":{ "bool":{ "should":[ { "multi_match":{ "query":"lisa", "fields":[ "Title", "Description" ], "type":"cross_fields", "operator":"and" } }, { "nested":{ "path":"Comments", "query":{ "filtered":{ "query":{ "match_all":{} }, "filter":{ "exists":{ "field":"Comments.Description" } } } } } } ] } } }
我对所有事物的映射
{ "en":{ "mappings":{ "video":{ "properties":{ "Comments":{ "type":"nested", "properties":{ "Description":{ "type":"string", "analyzer":"english", "fields":{ "folded":{ "type":"string", "analyzer":"folding" } } } } }, "Description":{ "type":"string", "analyzer":"english", "fields":{ "folded":{ "type":"string", "analyzer":"folding" } } }, "Title":{ "type":"string", "analyzer":"english", "fields":{ "folded":{ "type":"string", "analyzer":"folding" } } } } } } } }
而我的设置
{ "settings": { "analysis": { "analyzer": { "folding": { "tokenizer": "standard", "filter": [ "lowercase", "asciifolding" ] } } } } }
事实证明,我有一个很棒的索引,没有针对我的类型的映射。我删除了插件,可以在所有索引中进行搜索。