注意: 我最初发布此问题的方式有所不同,因此不值得更新,因为阅读后我学到了更多。
搜索文档并根据文档中的嵌套元素计算自定义分数。
{
"mappings": {
"book": {
"properties": {
"title": { "type": "string", "index": "not_analyzed" },
"topics": {
"type": "nested",
"properties": {
"title": { "type": "string", "index": "not_analyzed" },
"weight": { "type": "int" }
}
}
}
}
}
}
{
"query": {
"function_score": {
"query": {
"term": { "title": "The Magical World of Spittle" }
},
"script_score": {
"script": {
"lang": "painless",
"inline": "int score = 0; for(int i = 0; i < doc['topics'].values.length; i++) { score += doc['topics'][i].weight; } return score;",
"params": {
"default_return_value": 100
}
}
}
}
}
}
int score = 0;
for(int i = 0; i < doc['topics'].values.length; i++) {
score += doc['topics'][i].weight;
}
return score;
在类型[book]的映射中找不到[topics]的字段
嵌套文档存储在索引中的不同文档中,因此您不能通过父文档中的doc值来访问它们。您需要使用源文档并导航至topics.weight
属性,如下所示:
孤立无痛:
int score = 0;
for(int i = 0; i < params._source['topics'].size(); i++) {
score += params._source['topics'][i].weight;
}
return score;
完整查询:
{
"query": {
"function_score": {
"query": {
"term": { "title": "Book 1" }
},
"script_score": {
"script": {
"lang": "painless",
"inline": "int score = 0; for(int i = 0; i < params._source['topics'].size(); i++) { score += params._source['topics'][i].weight; } return score;",
"params": {
"default_return_value": 100
}
}
}
}
}
}
PS:还请注意,该类型int
不存在,它是integer
问题内容: 我有一个:before开头的’quote’和一个:after结束的报价。 现在,我想要的是一个:after:after供“引用”参考,但我无法使其正常工作。 有人知道这是否可能吗? 到目前为止,我的代码: 问题答案: 已经提出了嵌套和伪元素的想法;请参阅“生成和替换的内容”模块的这一部分。但是,该模块已被放弃,等待完全重写,因此在重新发布该文档之前,我不会屏息。即便如此,嵌套内容伪元素
我的mongo数据库中有: 我想从这个数组中删除on元素。我用的是golang和mgo。v2驱动程序,下面是我的代码: 它继续成功,但不删除项目时,我检查mongob。有人能告诉我我做错了什么吗?谢谢你们
有人能帮忙填写上面的评论部分吗?或者是否有其他选项来映射这些对象? 编辑:我尝试了下面的解决方案,但是接口实现类本身发生了变化。
问题内容: 我想从我的redux状态中删除一个元素。我使用无缝不可变及其API对状态进行操作。但是我找不到在嵌套状态时删除元素的任何好方法。 所以我要删除的元素是: 谢谢! 问题答案: 有时我也陷入了类似情况。 因此,根据redux docs ,更新嵌套对象的方式是:- 但是由于数组处于状态,这会使您的工作更加困难。 因此,有两种方法可以执行此操作。 第一种方式(困难的方式) 自己创建一个新对象并
我想数一数一条流的不同元素,我想知道为什么 不行,日蚀告诉我 类型收集器中的方法toMap(Function,Function,BinaryOperator)不适用于参数((s)- 顺便说一句,我知道这个解决方案: 所以我有两个问题: 我的第一个方法有什么错误 编辑:我自己解决了第一个问题: Java需要一个函数作为第二个参数。
问题内容: 是否有直接函数来计算CosmosDb查询中的不同元素? 这是默认计数: 和无数的独特作品: 但这会返回错误的请求-语法错误: 会和他们一起工作吗? 问题答案: 这是另一个解决地区问题并适用于的查询。基本上,您需要封装不重复内容然后进行计数。我们已经通过分页对它进行了测试,以查找您想要唯一记录的情况,而不仅是计数,而且它正在起作用。 您还可以根据条件所基于的内容,在括号的内部和外部使用子