gpt4 book ai didi

elasticsearch - 聚合,查询上下文和过滤器上下文在Elasticsearch 5.1中不起作用

转载 作者:行者123 更新时间:2023-12-03 00:56:28 26 4
gpt4 key购买 nike

我从 flex 搜索1.5迁移到5.1时遇到问题。
以下是我的 flex 搜索-1.5查询:

{
"_source":["_id","spotlight"],
"query":{
"filtered":{
"filter":{
"and":[
{"term":{"gender":"female"}},
{"range":{"lastlogindate":{"gte":"2016-10-19 12:39:57"}}}
]
}
}
},
"filter":{
"and":[
{"term":{"maritalstatus":"1"}}
]
},
"sort":[{"member2_dummy7":{"order":"desc"}}],
"size":"0",
"aggs": {

"maritalstatus": {

"filter": {},
"aggs" : {

"filtered_maritalstatus": {"terms":{"field":"maritalstatus","size":5000}}
}
}
}
}

此查询给我正确的doc_count聚合。此doc_count是根据查询上下文返回的结果集计算得出的,它会忽略过滤器上下文。

我在 flex 搜索5.1中编写了相同的查询:
{
"_source":["_id","spotlight"],
"query":{
"bool":{
"must":[
{"term":{"gender":"female"}},
{"range":{"lastlogindate":{"gte":"2016-10-19 12:39:57"}}}
],
"filter":{
"bool":{
"must":[
{"term":{"maritalstatus":"1"}}
]
}
}
}
},
"sort":[{"member2_dummy7":{"order":"DESC"}}],
"size":"0",
"aggs": {

"maritalstatus": {

"filter": {},
"aggs" : {

"filtered_maritalstatus": {"terms":{"field":"maritalstatus","size":5000}}
}
}
}

}

但是在 flex 搜索5.1中,聚合返回了错误的doc_count。我认为它正在查询上下文中使用过滤器,因此,它返回错误的doc_cout。有人可以告诉我在 flex 搜索5.1中分离查询和过滤器的正确方法吗?

最佳答案

您的1.5查询使用的post_filter已在5.1查询中删除。

ES 5.1中的等效查询如下(filtered/filter只需替换为bool/filter,而顶层filter重命名为post_filter):

{
"_source": [
"_id",
"spotlight"
],
"query": {
"bool": {
"filter": [
{
"term": {
"gender": "female"
}
},
{
"range": {
"lastlogindate": {
"gte": "2016-10-19 12:39:57"
}
}
}
]
}
},
"post_filter": {
"term": {
"maritalstatus": "1"
}
},
"sort": [
{
"member2_dummy7": {
"order": "desc"
}
}
],
"size": "0",
"aggs": {
"maritalstatus": {
"filter": {},
"aggs": {
"filtered_maritalstatus": {
"terms": {
"field": "maritalstatus",
"size": 5000
}
}
}
}
}
}

关于elasticsearch - 聚合,查询上下文和过滤器上下文在Elasticsearch 5.1中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com