c# - 搜索文档 elasticsearch ,包含长字段子值的字段
问题描述
我想在 elasticsearch 中搜索包含一个子值的字段(注册为 long)的文档,例如:如果我的 elasticsearch 中有一个包含(field1:12345)的文档,如果我搜索 12,我应该找到这份文件。
{
"_index": "overlog-mouvement-index",
"_type": "_doc",
"_id": "e707b9c1-8fb7-4cca-a659-c1ccdc3ed2f3",
"_version": 1,
"_score": null,
"_source": {
"typeEvent": 0,
"field1": 12345,
},
"sort": [
1633098180340
]
}
我正在尝试使用 QueryContainer,这是我的代码,你能帮我使用正确的查询吗?
long tempValue = 12;
query &= filtreQuery.QueryString(t => t.DefaultField(f => f.field1.ToString()).Query("*" + tempValue.ToString() + "*"));
解决方案
在您的长字段中创建一个字符串子字段,例如
{
"field1": {
"type": "long",
"fields": {
"to_string": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
现在,查询字符串字段,但从长字段中检索术语聚合
{
"size": 0,
"query": {
"prefix": {
"field1.to_string": "12"
}
},
"aggs": {
"myAggregation": {
"terms": {
"field": "field1",
"size": 5
}
}
}
}
注意:不需要子字段,也可以创建完全独立的字段
推荐阅读
- iis - IIS 重写规则 - 如果路径没有查询字符串
- amazon-web-services - 如何模拟来自不同位置的连接
- php - 如何在codeigniter中不使用result()或row()获取查询结果
- regex - 正则表达式在字母数字字符串中查找未括在括号中的数字字符串
- c# - 当泛型类型的类型参数在运行时已知时如何编程?
- sql - 在 oracle 中枢轴在 in 之后给出 sql 查询错误
- laravel - 如何在 laravel 的帖子中获取评论的用户名
- azure - 关于 azure 服务管理员角色的说明
- ruby-on-rails - 雇员控制器中的 PDFKit::NoExecutableError#to_pdf
- scala - scala 中的模式匹配在 def 中工作,否则不会