gpt4 book ai didi

elasticsearch - Elasticsearch将嵌套字段与值数组匹配

转载 作者:行者123 更新时间:2023-12-02 22:32:07 25 4
gpt4 key购买 nike

我正在尝试使用mongoid-elasticsearch和ElasticSearch 2.0在嵌套字段上应用术语查询。由于试错并没有带来多大 yield ,而且关于该主题的docs相当稀疏,因此这已经变得非常令人沮丧。
这是我的查询:

  {
"query": {
"nested": {
"path": "awards",
"query": {
"bool": {
"must": [
{ "match": { "awards.year": "2010"}}
]
}
}
},
"nested":{
"path": "procuring_entity",
"query": {
"bool": {
"must": [
{ "terms": { "procuring_entity.country": ["ES", "PL"]}}
]
}
}
}
}
}

尽管“match”和“term”可以很好地工作,但与“terms”查询结合使用时,它不会返回任何结果,甚至认为也没有结果。我的映射如下所示:
  elasticsearch!({
prefix_name: false,
index_name: 'documents',
index_options: {
mappings: {
document: {
properties: {
procuring_entity: {
type: "nested"
},
awards: {
type: "nested"
}
}
}
}
},
wrapper: :load
})

如果“嵌套”不算作分析器(据我所知不算),那么就没有问题。至于 second example,我认为情况并非如此,因为要匹配的值数组来自外部。
是否可以在嵌套字段中查询字词?难道我做错了什么?
还有其他方法可以将嵌套字段与多个值进行匹配吗?

任何想法将不胜感激。

最佳答案

我认为您需要为此更改nested types的映射-terms query仅适用于not_analyzed字段。如果将映射更新为以下内容:

elasticsearch!({
prefix_name: false,
index_name: 'documents',
index_options: {
mappings: {
document: {
properties: {
procuring_entity: {
type: 'nested',
properties: {
country: {
'type': 'string',
'index': 'not_analyzed'
}
}
},
awards: {
type: 'nested'
}
}
}
}
},
wrapper: :load
})

我认为如果您这样做查询应该工作。

关于elasticsearch - Elasticsearch将嵌套字段与值数组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33877469/

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