我Elasticsearch(V5.4.1)文件有_patents
场这样:Elasticsearch匹配的字符串数组
{
// (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
。
test'r [\'$ {egroup} | $ {e.age}'''' –