我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}'''' –