gpt4 book ai didi

search - 通过URL搜索和帖子正文之间的区别

转载 作者:行者123 更新时间:2023-12-03 00:42:28 25 4
gpt4 key购买 nike

我试图基于嵌套数组内的对象的属性值构造一个搜索查询。

可以正常工作:

curl -s -XGET 'http://localhost:9200/products/product/_search?q=items.sku:ABC123'

这对不起作用。为什么,我想念什么?:
{
"_source" : "items",
"query": {
"term" : {
"items.sku" : "ABC123"
}
}
}

我要检索的项目如下所示:
{
"name" : "Example product"
"brand" : {
"id" : 123,
"name" : "Nike"
},
"items" : [
{
id: 234,
sku: "ABC123"
},
{
id: 456,
sku: "XYZ963"
}
]
}

最佳答案

该查询不起作用,因为它没有使用与q运算符相同的运算符。
q运算符是使用query_string查询的“捷径”。实际上,对您所做的操作的等效查询如下:

{
"_source": "items",
"query": {
"query_string": {
"query": "items.sku:ABC123"
}
}
}

它将按预期输出文档:
"hits": {
"total": 1,
"max_score": 0.19178301,
"hits": [
{
"_index": "products",
"_type": "product",
"_id": "AU_VTrjXeQSEeO15aKQi",
"_score": 0.19178301,
"_source": {
"items": [
{
"id": 234,
"sku": "ABC123"
},
{
"id": 456,
"sku": "XYZ963"
}
]
}
}
]
}

区别在于 term查询搜索未分析的 (在您的示例中为ABC123),而 query_string根据要查询的字段的映射选择是否分析该值。

我认为在您的情况下,字段 items.sku的映射只是 string,这意味着默认情况下,您的字段是使用 standard分析器对 分析进行的:您的值已被索引为 abc123,因为它已经小写了(请参阅 standard analyzer documentation)。

我建议您阅读《 ElasticSearch最终指南》的分析部分(请参阅 here),以更好地理解这一点。

关于search - 通过URL搜索和帖子正文之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602927/

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