1 回答
TA贡献1775条经验 获得超11个赞
因为要获取字段中具有精确值的文档,所以需要使用term 查询。所以这个 elasticsearch 查询将适合你:
GET slog-2019-07-29/_search
{
"query": {
"term": {
"logLevel.keyword": {
"value": "Information"
}
}
}
}
请注意,对于我使用的字段logLevel.keyword而不是logLevel这个,是因为字段是关键字logLevel.keyword类型,这在您的情况下非常有用,因为elasticsearch不会分析此类字段中的值,因此在elasticsearch中保存为. 这将使您能够找到特定字段中具有精确值的文档。对于保存为.InformationInformationlogLeveltextinformation
我们还需要使用术语查询,因为我们不希望elasticsearch 分析我们放入的内容value。
现在,使用 NEST,您可以使用以下代码编写此类查询:
var searchResponse = await elasticClient
.SearchAsync<Document>(s => s
.Query(q => q
.Term(t => t
.Field(f => f.LogLevel.Suffix("keyword"))
.Value("Information"))));
class Document
{
public string LogLevel { get; set; }
}
LogLevel 应为“ERROR” LogType 应为“Response”。
为此,您需要使用bool 查询,它允许您将多个条件组合到一个查询中。
GET slog-2019-07-29/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"logLevel.keyword": {
"value": "ERROR"
}
}
},
{
"term": {
"logType.keyword": {
"value": "Response"
}
}
}
]
}
}
}
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报