.net - Elastic NEST 在具有内部关键字字段的文本字段上使用术语过滤器

标签 .net elasticsearch nest

我正在尝试按照 Elastic 5.x 的新标准对访问其内部关键字字段的文本属性进行术语筛选...

我有这样一个属性:

{
  "foo": {
    "type" "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
  }
}

我正在运行以下代码以使用内部关键字字段进行过滤...

var searchResult = _elasticClient.Search<InvoiceResult>(x => x
 .Index("my_index")
 .Query(query => query
  .Term(term => term
   .Field(new Field("foo.keyword"))
   .Value("TEST")
  )
 )
);

有什么方法可以使用模型类实现相同的结果吗?当我尝试下面的代码时,它从不使用关键字 inner field。

var searchResult = _elasticClient.Search<InvoiceResult>(x => x
 .Index("my_index")
 .Query(query => query
  .Term(term => term
   .Field(field => field.Foo)
   .Value("TEST")
  )
 )
);

干杯!

最佳答案

鸟巢 has这种情况下非常方便的扩展方法。

var searchResult = _elasticClient.Search<InvoiceResult>(x => x
    .Index("my_index")
    .Query(query => query
        .Term(term => term
            .Field(field => field.Foo.Suffix("keyword"))
            .Value("TEST")
        )
    )
);

希望对您有所帮助🤠。

关于.net - Elastic NEST 在具有内部关键字字段的文本字段上使用术语过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201144/

相关文章:

elasticsearch - 术语过滤器的 Elasticsearch 连字符问题

elasticsearch - 如何合并Elasticsearch Rails gem的两个或多个结果?

java - Elasticsearch安装中的IndexFormatTooNewException(6.5.4)

c# - 通用 Elasticsearch 方法 c#

c# - 单击 ListBoxItem 区域内的任何控件时触发器 SelectedIndex 发生更改

c# - SQLite 使用用户输入选择查询 C#

elasticsearch - 为什么新创建的索引在“发现”或“创建索引”模式中不可用?

c# - NEST 2.0和ElasticSearch 2.0无法模拟 “return all”查询

c++ - 如何编译用于 .net 应用程序的 C++ 程序?

c# - 为什么我无法调试动态加载的程序集?