当前位置: 首页 > 知识库问答 >
问题:

到。NET NEST的Elasticsearch DSL查询

韶浩皛
2023-03-14

我正在尝试将下面的弹性搜索DSL转换为嵌套查询,我正在使用elasticsearch的5.2版本

GET articles/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "FIY",
            "fields": [
              "title"
            ]
          }
        },
        {
          "nested": {
            "path": "tags",
            "query": {
              "terms": {
                "tags.tagName": [
                  "competition"
                ]
              }
            }
          }
        }
      ]
    }
  }
}

到目前为止,我已经得到了下面的部分,我知道过滤器部分不应该在那里,但我似乎不能添加嵌套的部分没有它

var result = client.Search<Article>(x => x
                .Query(q => q
                    .Bool(b => b
                        .Must(m => m 
                            .MultiMatch(mp => mp
                                .Query(query)
                                    .Fields(f => f
                                        .Fields(f1 => f1.Title, f2 => f2.Content, f3 => f3.Tags))))

                        .Filter(f => f
                            .Nested(n => n
                                .Path("tags")
                                .Query(q1 => q1
                                    .Terms(t1 => t1.Field(f2 => f2.Tags).Terms(tags))
                                         ))))));

共有1个答案

邢博涛
2023-03-14

您不需要使用Filter,只需将嵌套添加到Must Query中即可

  var result = client.Search<Article>(x => x
                .Query(q => q
                    .Bool(b => b
                        .Must(m => m 
                            .MultiMatch(mp => mp
                                .Query(query)
                                    .Fields(f => f
                                        .Fields(f1 => f1.Title, f2 => f2.Content, f3 => f3.Tags)),                    
                           m=> m.Nested(n => n
                                .Path("tags")
                                .Query(q1 => q1
                                    .Terms(t1 => t1.Field(f2 => f2.Tags).Terms(tags))
                                         )))));
 类似资料:
  • 和异常: 实体:GirMotiuRebuig 这个标准起作用了:

  • 问题内容: 我正在尝试将MYSQL查询转换为Elasticsearch。该查询包括在不同字段上的多个条件。让我解释一下我要达到的目标。我的MySQL查询是 如何在Elasticsearch中复制此查询。我的尝试是 但这不会返回任何内容。我正在使用Elasticsearch 7.6并尝试在Kibana上使用curl复制此查询,但答案仍然相同。 期待帮助 根据要求,索引的映射是 我接受的文件是 问题答

  • 我应该如何将这个MySQL查询转换为HQL来检索我需要的一些数据? 在我的代码中,有POJO ProcessedUrl,它映射了id/url/date/set(句子)字段。我想做一些类似的事情: 然后遍历此结果,为每个URL打印&。 我知道我的查询应该返回中的字段,那么我如何返回一些分组查询并从中检索不直接保存在表中的数据呢?就像每个URL的一样? 多谢帮忙。

  • 我想用预处理器实现虚拟视图。一个简单的例子: HQL之前: 有效HQL后: 本质上,我需要一种在执行查询之前处理查询的方法(而不是在运行中创建视图,这会产生很高的成本)。

  • 问题内容: 我需要一个SQL查询来从消息队列中选择行,直到SUM(users_count)最多达到1000。 但是 ,如果仅返回一行并且该行的users_count大于1000,就没有问题。 我需要类似的内容:(我添加了自己的关键字) 这是我的表结构: messages_queue -msg_id -msg_body-users_count (消息接收方的数量) -时间(插入时间) 问题答案: 该

  • 我试图将我的Mysql查询转换为JPQL,但我不知道哪个工具可以在eclipse上使用而无需编译。 我的日志没有告诉我哪里是错误,所以我找不到哪里是错误的语法。 谢谢你的帮助!