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

如何从ElasticSearch响应中删除额外字段

柴星津
2023-03-14

嗨,我是ElasticSearch的新手,我正在努力从ElasticSearch的响应中删除所有额外字段。请参见以下回复:

  "report": {
    "unique_users": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": 1234,
          "doc_count": 2,
          "user_details": {
            "hits": {
              "total": 2,
              "max_score": 1.4E-45,
              "hits": [
                {
                  "_index": "orders-test",
                  "_type": "order",
                  "_id": "2",
                  "_score": 0.0,
                  "_source": {
                    "customer_email": "reba_dickens@blick.name",
                    "customer_phone": "476.824.4998 x498",
                    "customer_name": "Mohammed Abernathy"
                  }
                }
              ]
            }
          }
        },
        {
          "key": 5678,
          "doc_count": 1,
          "user_details": {
            "hits": {
              "total": 1,
              "max_score": 1.4E-45,
              "hits": [
                {
                  "_index": "orders-test",
                  "_type": "order",
                  "_id": "1",
                  "_score": 0.0,
                  "_source": {
                    "customer_email": "yolanda.batz@ruel.biz",
                    "customer_phone": "1-715-183-8343 x026",
                    "customer_name": "Richie Tillman II"
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }

上面你可以看到响应中有一些附加字段,如_index、_type、_score、max_score等。我按照ElasticSearchresponse_filtering指南删除了这些字段,但对我不起作用。我还将filter_path参数传递给请求0.0.0.0:5000/v4/reports/user.json?filter_path=unique_users,unique_users.user_details.hits.hits._source但没有得到任何响应。我正在使用下面的函数来处理Elasticsearch查询。

  def query(options = {})

    aggregations = {}

    buckets = {}
    buckets_for_unique_users buckets, aggregations
    buckets_for_new_users buckets, aggregations
    buckets_for_high_rollers buckets, aggregations

    filters = []
    filters << time_filter(options)
    filters << restaurant_filter(options) if options[:restaurant_id]
    filters << channel_filter(options) if options[:channel_id]

    query = {
      query: { bool: { filter: filters } },
      aggregations: buckets
    }
    query
  end

谁能告诉我哪里做错了。

共有1个答案

谯翔
2023-03-14

将“\u source”与请求中所需的属性一起使用。这将帮助您仅获取指定的字段。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html

 类似资料:
  • 如果我们有如下查询 返回预期的结果(如下所示) 正如您所看到的,查询是针对和我们希望从结果中排除其他字段,但只包括和的字段 并排除其他字段,例如,以下是一些不是或(传递到查询中的字段)的字段-从

  • 问题内容: 我正在执行一个查询,返回的查询类似于70k文档(我需要所有文档,我目前正在使用扫描和滚动) 发生的结果是响应非常大(2 MB,我们已经将其从6 MB减少了)。我们筛选了所需的字段,由于仅从API调用查询,因此我们减少了属性的名称。 我可以看到的是,数组“命中”中的每个文档都具有以下我实际上不需要的默认字段: _index(我们仅要求一个索引) _type(我们只要求一种类型) _id(

  • 我想从(RubyonRails)响应中删除一些头文件 报头响应: HTTP/1.1 200正常 日期:2013年6月6日星期四14:42:26 GMT 连接:保持活动状态 X运行时间:0.01900 内容类型:文本/纯文本;字符集=utf-8 缓存控制:专用,最大年龄=0,必须重新验证 服务器:WEBrick/1.3.1(Ruby/1.8.7/2012-10-12) 内容长度:281 Etag:“

  • 问题内容: 我需要在所有索引到Elasticsearch的文档中删除一个字段。我该怎么做。任何删除查询都可以帮助我实现这一点。 问题答案: @backtrack所说的是对的,但是在Elasticsearch中有一种非常方便的方法。Elasticsearch将抽象出删除的内部复杂性。您需要使用更新API来实现- 您可以在此处找到更多文档。 注意:从Elastic Search 6开始,您需要包括一个

  • 我正在尝试对GsonConverterFactory使用Retrofit2,问题是这是我从okhttp: 因此,我得到以下例外: java.lang.IllegalStateException:应为BEGIN_OBJECT,但在第1行第2列为字符串 如何删除特殊字符和回车与改装2?