为了账号安全,请及时绑定邮箱和手机立即绑定

如何过滤掉弹性搜索中不存在的字段?

如何过滤掉弹性搜索中不存在的字段?

Go
慕尼黑8549860 2021-09-27 15:40:20
我想检查一个字段是否存在,并返回它不存在的文档的结果。我正在使用 Golang 库 Elastic:https : //github.com/olivere/elastic我尝试了以下但它不起作用:e := elastic.NewExistsFilter("my_tag")n := elastic.NewNotFilter(e)filters = append(filters, n)
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

好的,我不会深入研究您的语言查询 API。由于您要搜索不存在的字段(空),请exists在 a 内使用过滤器must_not(如果您使用 bool 过滤器):


{

  "query": {

    "filtered": {

      "filter": {

        "bool": {

          "must_not": [

            {

              "exists": {

                "field": "your_field"

              }

            }

          ]

        }

      }

    }

  },

  "from": 0,

  "size": 500

}

希望这可以帮助!


查看完整回答
反对 回复 2021-09-27
?
慕仙森

TA贡献1827条经验 获得超7个赞

您可以使用带有bool 查询 must_not 的存在查询:


GET /_search

{

    "query": {

        "bool": {

            "must_not": {

                "exists": {

                    "field": "your_field"

                }

            }

        }

    }

}

在 Elasticsearch 6.5 中测试


查看完整回答
反对 回复 2021-09-27
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

您可以为不存在创建一个布尔查询,如下所示:


existsQuery := elastic.NewExistsQuery(fieldName)

existsBoolQuery := elastic.NewBoolQuery().MustNot(existsQuery)


查看完整回答
反对 回复 2021-09-27
  • 3 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信