【问题标题】:Check if document exists or not in elasticsearch检查elasticsearch中是否存在文档
【发布时间】:2017-08-01 10:34:54
【问题描述】:

我想检查具有特定字段值的文档在 elasticsearch 中是否存在。

我已经上网但只找到了如何检查一个字段是否存在。

我的索引/类型是

/twitter/user

用户名是文档中的一个字段。

我想检查username="xyz"在这个类型中是否存在。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以使用大小0 进行查询。 total value 会让你知道 doc 是否存在。

    GET /twitter/user/_search
    {"size": 0,
      "query": {"match": {
      "username": "xyz"
    }}}
    

    已编辑——

    _count api can be used as well.

    GET /twitter/user/_count
    { "query": {"match": {
      "username": "xyz"
    }}}
    

    【讨论】:

    • 这会有帮助,只返回记录总数
    【解决方案2】:

    来自documentation

    如果您只想检查文档是否存在(您对内容根本不感兴趣),请使用 HEAD 方法而不是 GET 方法。 HEAD 请求不返回正文,仅返回 HTTP 标头:

    curl -i -XHEAD http://localhost:9200/twitter/user/userid
    

    如果文档存在,Elasticsearch 将返回一个200 OK 状态码……如果不存在,则返回一个404 Not Found

    注意: userid_id 字段的值。

    【讨论】:

      【解决方案3】:

      只搜索文档,如果存在则返回结果,否则不返回

      http://127.0.0.1:9200/twitter/user/_search?q=username:xyz
      

      而你要找的正是

      http://127.0.0.1:9200/twitter/user/_search/exists?q=username:xyz
      

      它将返回存在truefalse

      {
          "exists": false
      }
      

      【讨论】:

      • 第一个查询返回记录,但我不想要该记录,并且弹性搜索 5.* 中不存在其他记录。谢谢
      • 是的,我在旧版本中尝试过这个查询,所以不确定最新版本
      【解决方案4】:

      您可以使用大小为 0 的术语查询。请参阅下面的查询以供参考:

      POST twitter/user/_search
      {
          "query": {
              "term": {
                 "username": "xyz"
              }
          },
          "size" : 0
      }
      

      回复:

      {
      "took": 1,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 0,
        "hits": []
      }
      }
      

      您将在 hits.total 中获得总文档数,然后您可以检查 count > 0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-02
        • 2020-10-12
        • 2012-01-08
        • 1970-01-01
        • 2012-07-02
        • 2019-03-04
        • 2015-09-16
        • 2021-11-09
        相关资源
        最近更新 更多