如何使用 Nest 在 Elasticsearch 中实现过滤器

本文关键字:实现 过滤器 Elasticsearch 何使用 Nest | 更新日期: 2023-09-27 18:35:10

假设我在搜索相同的产品后得到一些产品列表,现在我想根据颜色、大小等属性过滤它们。

如何编写嵌套查询?

这是我的搜索查询:

   var result = client.Search<document>(s => s
                    .Analyzer("automplete").From(0).Size(20)
                    .Query(p => p
                        .MultiMatch(m => m
                            .OnFields(new[] { svalue })
                            .Query(value).Type(TextQueryType.PhrasePrefix)))
                            .Highlight(m => m.OnFields(n => n.OnField("some_field"))));

如何使用 Nest 在 Elasticsearch 中实现过滤器

希望你没事我认为您正在寻找嵌套的物品。Elasticsearch有一个speacil查询,对于这个需求是NestedQuery

'

GET /my_index/blogpost/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "eggs" }}, 
        {
          "nested": {
            "path": "comments", 
            "query": {
              "bool": {
                "must": [ 
                  { "match": { "comments.name": "john" }},
                  { "match": { "comments.age":  28     }}
                ]
        }}}}
      ]
}}}

'

在您的情况下,要访问嵌套的对象,您应该添加 products.color 作为条件。