Python 如何通过特定字段查询Elasticsearch以提高效率
如何索引和查询包含自定义权重的文档,以便使用该权重提升特定的查询结果 我用Python 如何通过特定字段查询Elasticsearch以提高效率,python,
elasticsearch,Python,
elasticsearch,如何索引和查询包含自定义权重的文档,以便使用该权重提升特定的查询结果 我用{“text”:“how now brown cow”,“weight”:2.3}等正文为简单文档编制了索引 使用Python包装器,我可以通过执行以下操作轻松搜索这些内容: es = Elasticsearch() results = es.search( index='my_index', body={ 'query':{ 'query_string':{
{“text”:“how now brown cow”,“weight”:2.3}
等正文为简单文档编制了索引
使用Python包装器,我可以通过执行以下操作轻松搜索这些内容:
es = Elasticsearch()
results = es.search(
index='my_index',
body={
'query':{
'query_string':{
'query':my_search_terms,
},
},
},
)
但是,在阅读之后,我不知道如何合并权重字段,以便通过该值提高结果。我该怎么做呢?我相信你可以用 比如:
{
"query": {
"function_score": {
"query": {
"match": {
"text": "how now brown cow"
}
},
"functions": [{
"script_score": {
"script": "doc['weight'].value"
}
}],
"score_mode": "multiply"
}
}
}
为什么不使用?@femtoRgon中描述的
boost
属性呢?我不确定这是我想要的。这似乎给字段分配了一个固定的权重,当从多个字段的匹配中累积和计算分数时,而不仅仅是针对特定的结果。此外,我不清楚在哪里指定“属性”。试图在索引JSON中传递它会给我一个错误。应该是每个字段,每个文档,而不是该字段中的所有内容(尽管您也可以这样做)。我在文档中看到的一个简单示例是:{“message”:{“_value”:“boosted value”,“_boost”:2.0}
QueryParsingException[[howdoi]没有为[function_score]];}]注册查询)代码>您使用的ElasticSearch版本是什么?我已经安装了0.20.6Ah,我相信直到0.90.4版本才引入功能评分。0.90.0是Lucene 4的第一个版本,它引入了一些改进,允许以合理的性能对文档内容进行评分。我认为您可能需要依赖简单的增强,或者升级elasticsearch。是的,这就是问题所在。谢谢