我知道使用字段设置可以在搜索中只包含我想要的字段 http://www.elasticsearch.org/guide/reference/api/search/fields/
...但我想知道是否可以做相反的操作,即指定不想在查询结果中包含的一个或两个字段(例如附件)。当我可以指定要排除的字段时,手动输入所有想要的字段减少一个或两个字段会很麻烦。
我知道使用字段设置可以在搜索中只包含我想要的字段 http://www.elasticsearch.org/guide/reference/api/search/fields/
...但我想知道是否可以做相反的操作,即指定不想在查询结果中包含的一个或两个字段(例如附件)。当我可以指定要排除的字段时,手动输入所有想要的字段减少一个或两个字段会很麻烦。
{
"_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_source
对象中,include
和 exclude
已经被弃用,分别被 includes
和 excludes
替代。 - gaborsch你是否在你提出问题的同一页上看到了 ‛partial‛ 的文档?这可以让你做你想要的事情,尽管我相信只能在 ‛_source‛ 字段上使用。请参见https://www.elastic.co/guide/en/elasticsearch/reference/1.7/search-request-fields.html
从
_source
中加载数据时,可以使用partial
字段来使用通配符控制将基于include
和exclude
模式加载_source
的哪个部分。包括和排除都支持多个模式:
{
"query" : {
"match_all" : {}
},
"partial_fields" : {
"partial1" : {
"include" : ["obj1.obj2.*", "obj1.obj4.*"],
"exclude" : "obj1.obj3.*"
}
}
}