我知道使用字段设置只包括我想要搜索的字段 http://www.elasticsearch.org/guide/reference/api/search/fields/
...但是我想知道我是否可以做相反的事情......不知怎的,指定一个或两个我不希望包含在查询结果中的字段(例如附件)。当我可以指定要排除的字段时,必须输入我想要的所有字段减去一两个,这似乎很痛苦
我知道使用字段设置只包括我想要搜索的字段 http://www.elasticsearch.org/guide/reference/api/search/fields/
...但是我想知道我是否可以做相反的事情......不知怎的,指定一个或两个我不希望包含在查询结果中的字段(例如附件)。当我可以指定要排除的字段时,必须输入我想要的所有字段减去一两个,这似乎很痛苦
您可以使用源过滤(在1.6和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"
前面的示例排除了附件字段中的文件内容。
您是否在问题中链接的同一页面上看到了“部分”的文档?这可以让你做你想做的事,虽然只是在我认为的'_source'字段。看到 http://www.elasticsearch.org/guide/reference/api/search/fields/
从中加载数据时
_source
,partial
字段可以用来使用 通配符来控制哪个部分_source
将基于加载include
和exclude
图案。都
include
和exclude
支持多种模式:
{
"query" : {
"match_all" : {}
},
"partial_fields" : {
"partial1" : {
"include" : ["obj1.obj2.*", "obj1.obj4.*"],
"exclude" : "obj1.obj3.*"
}
}
}