scala – elastic4s:使用rawQuery得分保持在1
发布时间:2020-12-16 18:31:35 所属栏目:安全 来源:网络整理
导读:我们在ElasticSearch 2.2.0中使用了elastic4s.许多查询作为 JSON存储在磁盘上,并通过elastic4s驱动程序用作rawQuery.结果中的分数在通过命令行提交的查询或elastic4s驱动程序之间不同. elastic4s驱动程序始终为所有结果返回得分1,而命令行执行产生两个不同的
我们在ElasticSearch 2.2.0中使用了elastic4s.许多查询作为
JSON存储在磁盘上,并通过elastic4s驱动程序用作rawQuery.结果中的分数在通过命令行提交的查询或elastic4s驱动程序之间不同. elastic4s驱动程序始终为所有结果返回得分1,而命令行执行产生两个不同的得分(针对不同的数据类型).
elastic4s的代码: val searchResult = client.execute { search in indexName types(product,company,orga,"User","Workplace") rawQuery preparedQuery sourceInclude(preparedSourceField:_*) sort {sortDefintions:_*} start start limit limit }.await 请注意,除了rawQuery preparedQuery之外,我删除了任何内容并且它没有更改分数1.通过命令行的完整查询非常长: { "query": { "bool": { "must": [ { "multi_match": { "query": "${search}","fields": [ "name","abbreviation","articleNumberManufacturer","productLine","productTitle^10","productSubtitle","productDescription","manufacturerRef.name","props" ] } } ],"filter": [ { "or": [ { "bool": { "must": [ { "type": { "value": "Product" } },{ "term": { "publishState": "published" } } ],"must_not": [ { "term": { "productType": "MASTER" } },{ "term": { "deleted": true } } ] } } ] } ] } } } 请注意,这几乎是prepareQuery,但用搜索查询替换$search.弹性搜索REST客户端为匹配返回3.075806的分数. 解决方法
elastic4s rawQuery将rawQuery-JSON包装在另一个查询对象中.
就像你要查询一样 { "query": { "query": { "bool": { "must": [ { "multi_match": { "query": "${search}",... 只需从您的JSON中删除您的包装“查询”,响应将显示不同的分数. 或者,您可以尝试使用extraSource而不是rawQuery,如elastic4s文档中所述.虽然它根本不适合我: 错误信息:value extraSource不是com.sksamuel.elastic4s.SearchDefinition的成员 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |