首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法排除Elasticsearch查询中的字段

有没有办法排除Elasticsearch查询中的字段
EN

Stack Overflow用户
提问于 2013-08-14 07:23:13
回答 2查看 35.7K关注 0票数 29

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

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

EN

回答 2

Stack Overflow用户

发布于 2015-09-01 06:16:29

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

代码语言:javascript
复制
{
    "_source": {
        "include": [ "obj1.*", "obj2.*" ],
        "exclude": [ "*.description" ]
    },
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

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

代码语言:javascript
复制
curl "localhost:9200/myindex/mytype/66a8f299870b4cab?_source_exclude=file._content&pretty"

上一个示例排除了附件字段中的文件内容。

票数 30
EN

Stack Overflow用户

发布于 2013-08-14 13:09:01

您是否在问题中链接的页面上看到了“partial”的文档?这允许你做任何你想做的事情,尽管我相信只是在‘_source’字段上。请参阅https://www.elastic.co/guide/en/elasticsearch/reference/1.7/search-request-fields.html

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

includeexclude都支持多种模式:

代码语言:javascript
复制
{
    "query" : {
        "match_all" : {}
    },
    "partial_fields" : {
        "partial1" : {
            "include" : ["obj1.obj2.*", "obj1.obj4.*"],
            "exclude" : "obj1.obj3.*"
        }
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18220883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档