Elasticsearch Nest:获取随机文档

时间:2014-11-18 09:15:27

标签: c# elasticsearch nest

我正在尝试使用Elastic Search NEST客户端获取随机记录。 有没有办法做到这一点?

3 个答案:

答案 0 :(得分:3)

为了赞美@ pickypg的回答,以下是如何在NEST中使用function_score函数撰写random_score查询的示例:

client.Search<MyType>(s => s
    .Query(q => q
        .FunctionScore(fs => fs
            .Query(fq => fq.MatchAll())
            .RandomScore()
        )
    )
);

答案 1 :(得分:1)

ES 7.x

嵌套方式:

var result = _elastic.Search<dynamic>(s => s
        .Query(q => q
        .FunctionScore(fs => fs.Functions(f => f.RandomScore())
        .Query(fq => fq.MatchAll()))));

原始查询方式:

 GET index-name/_search
    "size": 1,
    "query": {
        "function_score": {
                "query" : { "match_all": {} },
               "random_score": {}
        }
    }
}

答案 2 :(得分:0)

这更像是一个与NEST相关的Elasticsearch问题。考虑到这一点,您可以使用Elasticsearch中的random_score function来执行此操作。 random_score是Elasticsearch中可用的众多function_score之一 - 包括脚本分数 - 并且可用于控制每个匹配文档的_score

相对于Elasticsearch的REST API

curl -XGET localhost:9200/your-index/your-type/_search -d '{
  "query" : {
    "function_score": {
      "query": { "match_all": {} },
      "random_score" : { }
    }
  },
  "size" : 1
}'

您可以控制随机数生成器使用的种子,您可以创建自己的随机函数分数。当前random_score实现从索引(唯一标识符)加载_uid字段,文档说明这些字段可能是内存密集的。