当前位置: 首页 > 面试题库 >

如何使用Elasticsearch编写条件查询?

龚铭
2023-03-14
问题内容

我有一个用于Elasticsearch的简单JSON查询,如下所示:

"query": {
  "bool": {
    "must": { "match": { "id": "1" }} ,
    "must": { "match": { "tags.name": "a1"}}
   }
}

仅当值(在这种情况下为“ a1”)不为空时,才如何执行第二个“必须”条件?


问题答案:

您可以使用以下方法实现它-

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "id": "1"
          }
        },
        {
          "bool": {
            "should": [
              {
                "missing": {
                  "field": "tags.name"
                }
              },
              {
                "match": {
                  "tags.name": "a1"
                }
              }
            ]
          }
        }
      ]
    }
  }
}


 类似资料:
  • 其中“in”是来自用户的输入。 我只从hibernate中的两个表中映射了Emp_Id作为主键,因此hibernate条件将只对该表应用联接,而不对Langcode应用联接。 注意:-我不能更改hibernate映射,只能使用hibernate标准,根据客户的要求,请帮助我。

  • 此外,您是否愿意指出任何好的教程,以编写复杂的查询在JPA。

  • 我有一个带标记器的字段,它被点分割。搜索时,以下值为aaa。bbb将分为两个术语:aaa和bbb。 我的问题是如何编写bool查询,将包含多个条件在同一项? 例如,我想得到所有文档,其中它的字段包含一个与模糊搜索匹配的术语,但同一术语不得包含。 以下是我想要实现的一些示例: 匹配:因为它匹配模糊搜索,而不是gamil <代码>gamil。bmail//匹配:因为术语bmail与模糊搜索匹配,而不是

  • 这是我的Elasticsearch sql查询。我使用Kibana执行了这个查询,并得到了有效的输出。 明白吗?format=json{“query”:“从eps_stbl_日志中选择Count(appId),其中cast(timestamp AS DATE)=TODAY()和status='COMPLETED'” 这需要在restHighLevelClient java API中编写。你能帮助编

  • 问题内容: 我想使用查询来比较多个字段。我有字段1到4。我想搜索字段1大于字段2并且下面的查询工作正常的数据; 现在,我想搜索哪个字段1大于字段2以及哪个字段3大于字段4的数据。根据Elastic Search:如何编写多语句脚本?和此链接,我只需要用分号分隔每个语句。所以应该是这样的: 但是该查询无效,并返回如下编译错误: ] .value> doc [‘field2’]。value; doc