gpt4 book ai didi

elasticsearch - 弹性嵌套访问文本类型的子属性

转载 作者:行者123 更新时间:2023-12-03 01:34:07 24 4
gpt4 key购买 nike

我创建了文本属性,名称,也创建了子属性,命名为,名称为,words_count,我想对words_count,名称进行范围查询。我如何使用Nest在C#中访问它。

"mappings": {
"person": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
},
"words_count": {
"type": "token_count",
"analyzer": "standard"
},
"length": {
"type": "token_count",
"analyzer": "character_analyzer"
}
}
}
}
}
}

我有名字的长度,但是它来自C#字符串的长度。我想访问 flex 创建的名称的words_count子属性。
c# code

Func<QueryContainerDescriptor<MyType>, QueryContainer> query = m => m
.Range(r => r.Field(f => f.name.words_count).Relation(RangeRelation.Within)
.GreaterThanOrEquals(10).LessThanOrEquals(14));

我想从 flex 巢穴中替换 f.name.words_count 。我需要为具有属性长度的名称创建类吗?

最佳答案

您无需创建POCO属性即可映射到 multi-field (通常也称为fieldssub-fields)。

它们具有能够以多种不同方式索引单个输入的功能,这在搜索用例中非常常见。例如,使用多种不同类型的分析为街道地址编制索引。

您可以使用 .Suffix(...) 扩展方法来引用multi-field

Func<QueryContainerDescriptor<MyType>, QueryContainer> query = m => m
.Range(r => r
.Field(f => f.name.Suffix("words_count"))
.Relation(RangeRelation.Within)
.GreaterThanOrEquals(10)
.LessThanOrEquals(14)
);

关于elasticsearch - 弹性嵌套访问文本类型的子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53777463/

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