我正在使用Elasticsearch和Nest为特定时间范围内的文档创建查询,并执行一些筛选方面的操作。查询如下所示:
{
"facets": {
"notfound": {
"query": {
"term": {
"statusCode": {
"value": 404
}
}
}
}
},
"filter": {
"bool": {
"must": [
{
"range": {
"time": {
"from": "2014-04-05T05:25:37",
"to": "2014-04-07T05:25:37"
}
}
}
]
}
}
}
在具体情况下,搜索的总点击量为21个文档,这符合ElasticSearch中该时间范围内的文档。但是“NotFound”方面返回38,这符合StatusCode值为404的ErrorDocuments的总数。
根据我对文档的理解,facets通过搜索收集数据。在这种情况下,“NotFound”方面永远不能返回高于21的计数。
我在这里做错了什么?
filter/query/filtered_query/facet过滤器之间有明显的区别,这一点很好地了解。
顶层过滤器
{
filter: {}
}
这充当后筛选器,这意味着它将在查询阶段结束后筛选结果。由于分面是查询阶段的一部分,过滤器不会影响被分面的文档。过滤器不会改变分数,因此非常可缓存。
{
query: {}
}
查询会影响文档的得分,因此,查询的可缓存性不如筛选器。查询在查询阶段运行,因此也会影响被分面的文档。
过滤查询
{
query: {
filtered: {
filter: {}
query: {}
}
}
}
这允许您在查询阶段运行筛选器,利用它们更好的可缓存性,并让它们影响被分面的文档。
刻面滤波器
"facets" : {
"<FACET NAME>" : {
"<FACET TYPE>" : {
...
},
"facet_filter" : {
"term" : { "user" : "kimchy"}
}
}
}
{
"facets" : {
"wow_facet" : {
"query" : {
"term" : { "tag" : "wow" }
}
}
}
}
令人困惑的是,过滤器方面是在搜索对象上使用.facetfilter()
指定的。我将在1.0中更改这一点,以避免将来的混乱。
遗憾的是:嵌套中的.facetfilter()
和.facetquery()
不允许您像使用其他方面那样指定方面过滤器
:
var results = typedClient.Search<object>(s => s
.FacetTerm(ft=>ft
.OnField("myfield")
.FacetFilter(f=>f.Term("filter_facet_on_this_field", "value"))
)
);
在RoboMongo(0.9.0-RC09)中运行以下mongo查询会给出正确的文档数量(使用游标计数函数),而迭代所有文档只会返回一小部分文档: 我们是否需要专门配置查询以返回所有文档?
问题内容: 我想知道为什么搜索特定术语会返回索引的所有文档,而不返回包含所请求术语的文档。 这是索引以及我的设置方法:(使用elasticsearch头插件浏览器界面) 然后我添加了一些文档: 因此,现在触发“ plaat”搜索时,人们会希望搜索会返回包含“ plaatstaal”的文档。 但是为我节省了更多的搜索,elasticsearch会恢复所有文档的大小,无论其文本内容如何。我在这里想念什
问题内容: 我有这行代码(总是返回1): 其中token [“ rows”]是: 我想对组件数量进行计数。 这也不起作用: 整个JSON在这里: 问题答案: 根据您在另一个答案中的评论,我现在可以了解您为什么感到困惑。您没有在问题中提到正在执行XML到JSON的转换。 如您所知,XML不像JSON那样具有“对象”或“数组”的概念。在XML中,所有内容都只是命名节点的集合。在确定某个东西应该是数组还
我正在查询URI以从web服务获取一些数据。那很好。但我注意到,我的json hase多页的page\u计数,但只返回第一页数据。 以下是json的样子: 如何返回所有页面而不是只返回第一页?我知道这可能不是个好主意,但我该怎么做? 更新:web服务的URI类似于: 谢谢
我试图让2支球队互相比赛。当我说团队1.玩(团队2)时,我称之为;当 i 生成的数字小于 0.5 时,team2 应获胜,如果大于 0.5,则团队 1 应获胜。当团队 1 获胜时,它会正确显示为尼克斯,但当团队 2 获胜时,它会显示内存地址。我怎么能让它正确地说网是赢的,而不是team@78987neu73
假设我有这个给定的数据 当我搜索最喜欢丰田车的人时,每当我查询这个数据时,它都会返回这个数据 结果是两个名为ABC的记录。如何只选择不同的文档?我想得到的结果只有这个 这是我的问题 我正在使用ElasticSearch 1.0.0。使用java api客户端