如何使用 Nest 从 Json ElasticSearch 获取 logType 和 level?

我有一个数据网格,我想在数据网格上方的一些文本框中显示当前所选行的一些详细信息。我正在使用 Telerik 的网格,并且 SelectionUnit=Mixed 和 SelectionMode=Extended。因此 SelectedItem 和 SelectedItems 始终为 null。我的工作解决方案是,我创建了一个附加属性,如果仅选择一行中的单元格,则该属性提供该行的值;如果选择多个值中的单元格,则提供虚拟值。


网格的该部分定义为:


<telerik:RadGridView b:myBehavior.CurrentRow="{Binding Path=Data.SelectedRow, Source={StaticResource DataContextProxy}}" Name="myGridView" ...>

并且使用以下代码在文本框中引用这些值:


<TextBox Text="{Binding Path=(b:myBehavior.CurrentRow).TextValue, ElementName=myGridView}" />

正如您所看到的,我必须在我的 viewModel 中创建一个属性绑定。有没有办法在不使用视图模型的情况下初始化附加属性?要么提供虚拟记录,要么提供 NULL?


如果我set b:myBehavior.CurrentRow=""得到异常(无效值)。我需要在这里做什么才能让它运行?


动漫人物
浏览 100回答 1
1回答

繁星淼淼

因为要获取字段中具有精确值的文档,所以需要使用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"            }          }        }      ]    }  }}
打开App,查看更多内容
随时随地看视频慕课网APP