gpt4 book ai didi

elasticsearch - 如何在术语查询中查询对象数组

转载 作者:行者123 更新时间:2023-12-03 00:35:10 24 4
gpt4 key购买 nike

我正在使用Elasticsearch 5.5.0。

我的索引我有 flex 的json类型吸引部分的数据,看起来像:

"directions": "Exit the M4 at Junction 1",
"phoneNumber": "03333212001",
"website": "https://www.londoneye.com/",
"postCode": "SE1 7PB",
"categories": [
{
"id": "ce4cf4d0-6ddd-49fd-a8fe-3cbf7be9b61d",
"name": "Theater"
},
{
"id": "5fa1a3ce-fd5f-450f-92b7-2be6e3d0df90",
"name": "Family"
},
{
"id": "ed492986-b8a7-43c3-be3d-b17c4055bfa0",
"name": "Outdoors"
}
],
"genres": [],
"featuredImage": "https://www.daysoutguide.co.uk/media/1234/london-eye.jpg",
"images": [],
"region": "London",

我的下一个查询如下:
 var query2 = Query<Attraction>.Bool(
bq => bq.Filter(
fq => fq.Terms(t => t.Field(f => f.Region).Terms(request.Region.ToLower())),
fq => fq.Terms(t => t.Field(f => f.Categories).Terms(request.Category.ToLower())))

生成的查询如下所示:
    {
"query": {
"bool": {
"filter": [
{
"terms": {
"region": [
"london"
]
}
},
{
"terms": {
"categories": [
"family"
]
}
}
]
}
}
}

那没有结果。如果我删除类别位,我会得到结果。因此,我试图对类别进行术语过滤,该类别是一组对象。看来我做错了这个查询。任何人如何使它起作用的任何提示?

问候

伊斯梅尔

最佳答案

您仍然可以通过以下方式使用强类型属性访问:
t.Field(f => f.Categories.First().Name)NEST的属性推断器将使读者阅读.First()并产生categories.name
t.Field(f => f.Categories[0].Name)也可以。

关于elasticsearch - 如何在术语查询中查询对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45149351/

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