【问题标题】:Is there a way to exclude a field in an Elasticsearch query有没有办法在 Elasticsearch 查询中排除字段
【发布时间】:2018-10-23 20:52:33
【问题描述】:

我知道使用字段设置在搜索中仅包含我想要的字段http://www.elasticsearch.org/guide/reference/api/search/fields/

...但我想知道是否可以做相反的事情...以某种方式指定我不希望包含在查询结果中的一两个字段(例如附件)。当我可以指定要排除的字段时,必须输入我想要减去一两个的所有字段似乎很痛苦

【问题讨论】:

  • 为了清楚起见,您链接到的“字段”参数不会影响运行查询的字段,只是返回的内容......(我想你知道这一点,更多其他人们阅读。)
  • 是的,我知道,不过感谢您的澄清。
  • 这能回答你的问题吗? Make elasticsearch only return certain fields?

标签: elasticsearch


【解决方案1】:

您可以使用源过滤(在 v. 1.6 和 v. 1.7 中测试):https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html

{
    "_source": {
        "include": [ "obj1.*", "obj2.*" ],
        "exclude": [ "*.description" ]
    },
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

你也可以在 GET 请求中使用它:

curl "localhost:9200/myindex/mytype/66a8f299870b4cab?_source_exclude=file._content&pretty"

前面的示例排除了附件字段中的文件内容。

【讨论】:

  • 能否解释一下这一行中的通配符选择器:"exclude": [ "*.description" ]*.description 是否与(用正则表达式重写):.*\.description 相同?谢谢!
  • 嗨@crollywood,这个例子取自ES官方文档,它不包括所有“描述”子字段,所以我认为你的正则表达式是正确的。
  • includeexclude 现在在 _source 对象中已弃用,它们分别被 includesexcludes 替换。
【解决方案2】:

您是否在问题中链接的同一页面上看到了 ‛partial‛ 的文档?这让你可以做你想做的事,尽管我相信只在‛_source‛字段上。见https://www.elastic.co/guide/en/elasticsearch/reference/1.7/search-request-fields.html

_source加载数据时,可以使用partial字段 通配符来控制_source 的哪一部分将根据加载 includeexclude 模式。

includeexclude 都支持多种模式:

{
    "query" : {
        "match_all" : {}
    },
    "partial_fields" : {
        "partial1" : {
            "include" : ["obj1.obj2.*", "obj1.obj4.*"],
            "exclude" : "obj1.obj3.*"
        }
    }
}

【讨论】:

  • 好吧,您至少可以引用该文档。即使 OP 遗漏了一些明显的东西,这更像是一个评论而不是一个答案。
  • 是的,我看到了,试过了,但没用,所以我可能做错了什么,只是不知道是什么:\
  • @PaulBellora - 很公平。发帖时我正在使用移动设备,因此向 concept47 道歉。
  • @concept47,您是否考虑过在您的 Google 网上论坛发帖中使用exclude,但也为* 使用include?不确定这是否可能,但可能吗? (这是一个范围,我承认)
  • 问题是所有字段都被返回了,所以我认为这不会影响它,但我也会尝试一下
猜你喜欢
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2020-02-14
  • 1970-01-01
相关资源
最近更新 更多