获得最高分的doc。 Elasticsearch

时间:2017-02-01 16:02:04

标签: json elasticsearch

我是Elasticsearch的新人。其实我今天开始了。

我告诉"银行"他们拥有的示例,并且两次添加了相同的帐户。

然后我想知道我是否可以使用该号码获得帐号,并且它有三个帐号具有相同的号码。没关系。

然而,我写了自己的"得分解释"并看到它的工作原理。

现在,我想获得得分最高的文档(帐户),但我不知道该怎么做。

这就是我写的JSON:

Partno  PartRev Location    OnHand
0D6591D 0       MV3         0

这就是:

{
    "query": {
        "function_score": {
            "query": {
                "bool": {
                    "must": [
                        {
                            "match": {
                                "account_number": "998"                                                 }
                        }
                    ]
                }
            },
            "functions": [
                {
                    "script_score": {
                        "script": { 
                            "lang": "groovy",
                            "file": "test-score",                           
                            "params": {
                                "boostBy": 2
                            }                       
                        }
                    }
                }
            ]           
        }
    }
}

我想在" max_score"中使用该帐号。可能吗?或者我必须采取一切,其他地方决定什么是最高分?

我还想要,如果max_score有多个帐户,它会返回每个帐户的" max_score"。这就是为什么如果我只是写" size = 1"它为什么不起作用。

很抱歉,如果这是一个愚蠢的问题,就像我说的那样,我今天开始使用Elasticsearch并且不知道该怎么做。

也许有人曾尝试过类似的东西。

2 个答案:

答案 0 :(得分:0)

您可以使用size参数限制ES返回的文档数量。

{
    "query": {
        [...snip...]
    },
    "size": 1
}

reference

答案 1 :(得分:0)

我没有找到一个好的答案。所以我使用“尺寸”:1当Shadocko建议我只需要第一个时。当我需要每个匹配max_score的数据时,我只需要整个日期和其他地方我决定哪个数据是正确的。