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 關注
- 125 瀏覽
添加回答
舉報