【发布时间】:2020-08-10 18:50:46
【问题描述】:
我的 Elasticsearch (v5.4.1) 文档有一个 _patents 字段:
{
// (Other fields : title, text, date, etc.)
,
"_patents": [
{"cc": "US"},
{"cc": "MX"},
{"cc": "KR"},
{"cc": "JP"},
{"cc": "CN"},
{"cc": "CA"},
{"cc": "AU"},
{"cc": "AR"}
]
}
我正在尝试构建一个查询,该查询将仅返回其专利与一系列国家代码匹配的文档。
例如,如果我的过滤器是["US","AU"],我需要返回在US 和AU 中拥有专利的所有文档。排除具有US 但没有AU 的文档。
到目前为止,我已尝试将“术语”字段添加到我当前的工作查询中:
{
"query": {
"bool": {
"must": [
// (Other conditions here : title match, text match, date range, etc.) These work
,
{
"terms": {
"_patents.cc": [ // I tried just "_patents"
"US",
"AU"
]
}
}
]
}
}
}
或者这个,作为过滤器:
{
"query": {
"bool": {
"must": [...],
"filter": {
"terms": {
"_patents": [
"US",
"AU"
]
}
}
}
}
}
我尝试过的这些查询和变体不会产生错误,但会返回 0 结果。
我无法将我的 ES 文档模型更改为更容易匹配的模型,例如 "_patents": [ "US","CA", "AU", "CN", "JP" ],因为这是一个填充字段。在索引时,我填充并引用具有许多字段的 Patent 文档,包括 cc。
【问题讨论】:
标签: elasticsearch