Json 只获取得分最高的文档。弹性搜索
我是Elasticsearch的新手。实际上我是从今天开始的 我举了一个“银行”的例子,他们已经添加了相同的账户两次 然后我想看看我是否能得到这个号码的账户,结果有三个账户的号码是一样的。没关系 但后来,我写了自己的“分数解释”,并看到它的工作 现在,我只想得到得分最高的文档(帐户),但我不知道怎么做 这就是我写的JSON:Json 只获取得分最高的文档。弹性搜索,json,
elasticsearch,Json,
elasticsearch,我是Elasticsearch的新手。实际上我是从今天开始的 我举了一个“银行”的例子,他们已经添加了相同的账户两次 然后我想看看我是否能得到这个号码的账户,结果有三个账户的号码是一样的。没关系 但后来,我写了自己的“分数解释”,并看到它的工作 现在,我只想得到得分最高的文档(帐户),但我不知道怎么做 这就是我写的JSON: { "query": { "function_score": { "query": { "b
{
"query": {
"function_score": {
"query": {
"bool": {
"must": [
{
"match": {
"account_number": "998" }
}
]
}
},
"functions": [
{
"script_score": {
"script": {
"lang": "groovy",
"file": "test-score",
"params": {
"boostBy": 2
}
}
}
}
]
}
}
}
这就是结果:
{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 33738,
"hits": [
{
"_index": "bank",
"_type": "account",
"_id": "998",
"_score": 33738,
"_source": {
"account_number": 998,
"balance": 16869,
"firstname": "Letha",
"lastname": "Baker",
"age": 40,
"gender": "F",
"address": "206 Llama Court",
"employer": "Dognosis",
"email": "lethabaker@dognosis.com",
"city": "Dunlo",
"state": "WV"
}
},
{
"_index": "bank",
"_type": "account",
"_id": "AVn6HUT-4vooOra1Vb9f",
"_score": 33246,
"_source": {
"account_number": 998,
"balance": 16623,
"firstname": "Bradshaw",
"lastname": "Mckenzie",
"age": 29,
"gender": "F",
"address": "244 Columbus Place",
"employer": "Euron",
"email": "bradshawmckenzie@euron.com",
"city": "Hobucken",
"state": "CO",
"aggregations": {
"testing_n_grams": {
"avg": {
"script": {
"inline": "doc['grade'].value",
"lang": "painless"
}
}
}
}
}
},
{
"_index": "bank",
"_type": "account",
"_id": "AVn6G6hA4vooOra1Vb9e",
"_score": 33246,
"_source": {
"account_number": 998,
"balance": 16623,
"firstname": "Bradshaw",
"lastname": "Mckenzie",
"age": 29,
"gender": "F",
"address": "244 Columbus Place",
"employer": "Euron",
"email": "bradshawmckenzie@euron.com",
"city": "Hobucken",
"state": "CO",
"aggregations": {
"testing_n_grams": {
"script": {
"inline": "doc['firstname'].value",
"lang": "painless"
}
}
}
}
}
]
}
}
我只想考虑“最高分数”的账目。可能吗?或者我必须把所有的东西都拿走,然后在别的地方决定最高分数是多少
我还想知道,如果有多个帐户有max_分数,它会返回每个帐户的max_分数。这就是为什么我只写“size=1”是不起作用的
抱歉,如果这是一个愚蠢的问题,就像我说的,我今天从Elasticsearch开始,不知道怎么做
也许以前有人试过类似的方法 您可以使用
size
参数限制ES返回的文档数量
{
"query": {
[...snip...]
},
"size": 1
}
我没有找到一个好答案。所以我使用“size”:1,正如Shadocko在我只需要第一个时建议的那样。当我需要每一个匹配max_分数的数据时,我只需要整个日期,然后在其他地方我决定哪一个数据是正确的 谢谢你的回答!是的,但如果不止一个医生的得分最高?有没有可能把每一份符合最高分数的文件都拿走?