gpt4 book ai didi

elasticsearch - Elasticsearch匹配字符串数组

转载 作者:行者123 更新时间:2023-12-04 06:25:59 24 4
gpt4 key购买 nike

我的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"],那么我需要返回所有在 USAU中都拥有专利的文档。排除具有 US但没有 AU的文档。

到目前为止,我已经尝试在当前的工作查询中添加一个“term”字段:
{
"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

最佳答案

我找到了解决方案。过滤后的国家/地区名称必须为小写 ..."US"没有返回结果,但是"us"可以工作,尽管索引字段是"US" ......淡淡-_-'
我也这样写查询:

{
"query": {
"bool": {
"must": [
{
"term": {
"_patents.cc": "us"
}
},
{
"term": {
"_patents.cc": "ca"
}
}
]
}
}
}

关于elasticsearch - Elasticsearch匹配字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44583912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com