gpt4 book ai didi

elasticsearch - 在Elasticsearch中按嵌套对象字段值过滤

转载 作者:行者123 更新时间:2023-12-02 23:18:03 26 4
gpt4 key购买 nike

我想按嵌套字段值过滤文档。我的文档就是这样,我想通过Color参数对其进行过滤:

{
"_index": "myindex",
"_type": "product",
"_id": "984984",
"_source": {
"id": "98418",
"name": "Product1",
..
"parameters": {
"Color": [
"Black",
"Gold"
]
}
}
}

我的映射是:
{
"myindex": {
"mappings": {
"product": {
"properties": {
..
"parameters": {
"type": "nested",
"properties": {
"Color": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
..
}
}
}
}
}
}

我的 过滤器查询如下:
{
"query": {
"bool": {
"filter": {
"nested": {
"path": "parameters",
"query": {
"term": {
"parameters.Color":"Gold"
}
}
}
}
}
}
}

但是很遗憾,我的文档数量为零,我不明白为什么?

谢谢

编辑

如果这有效:
{
"query": {
"nested": {
"path": "parameters",
"query": {
"bool": {
"must": [
{ "match": { "parameters.Color": "Gold" }}
]
}
}
}
}
}

..但这不是:
{
"query": {
"nested": {
"path": "parameters",
"query": {
"bool": {
"filter": [
{ "term": { "parameters.Color": "Gold" }}
]
}
}
}
}
}

为什么??

最佳答案

您的term查询正在寻找完全匹配的内容,并且在搜索之前先分析match查询。如果您使用标准分析仪,它将在分析术语时将其小写。

如果您需要进行完全匹配,则可以使用关键字字段。

{
"query": {
"bool": {
"filter": {
"nested": {
"path": "parameters",
"query": {
"term": {
"parameters.Color.keyword":"Gold"
}
}
}
}
}
}
}

关于elasticsearch - 在Elasticsearch中按嵌套对象字段值过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52545057/

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