【问题标题】:Compare two fields in same document without using script elasticsearch在不使用脚本 elasticsearch 的情况下比较同一文档中的两个字段
【发布时间】:2021-02-11 15:42:27
【问题描述】:

我们使用的是弹性版本 7.10.2。我想比较同一文档中的两个字段。我的组织中禁用了脚本。 请帮助在不使用脚本的情况下构建以下查询。 这里我的查询是:昵称为空或昵称为空或昵称等于名字。

困难的部分是如何构建查询以获取昵称等于名字的记录

要转换为普通查询的相关脚本查询:

{
  "query": {
    "bool": {
      "must": [{
        "script": {
          "script": {
            "inline": "doc['nickname.keyword'].value==null || doc['nickname.keyword'].value =='' || doc['nickname.keyword'].value == doc['firstname.keyword'].value",
            "lang": "painless",
            
          }
        } 
      }]
    }
  }
}

【问题讨论】:

    标签: elasticsearch elastic-stack


    【解决方案1】:

    我看到您已经在比较 nickname.keyword 和您的 firstname 还提到这是困难的部分,这就是您需要脚本的原因,您可以简单地在此关键字字段上使用搜索查询并获得您想要的结果想要。

    您可以使用下面的term query

    {
      "query": {
        "term": {
          "nickname.keyword": {
            "value": "your-nickname", // provide your nickname as value
          }
        }
      }
    }
    

    【讨论】:

    • @sardarCoder 是的,请告诉我 :)
    • 嗨@Opster Elasticsearch Ninja,我没有输入字符串来比较我只想要昵称和名字相同的记录,我不想使用脚本来替代上述脚本
    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 2013-10-05
    • 2022-12-11
    • 1970-01-01
    • 2012-02-03
    • 2018-12-03
    • 1970-01-01
    相关资源
    最近更新 更多