我正在运行一个Elasticsearch查询,但是现在我想通过搜索文档中已定义的“结果”的值(从0到6)来对其进行过滤。我想实际用来过滤搜索的值在名为“ decision_results”的列表中,并且由运行中的网站上的复选框定义。
我尝试了以下代码,但是页面上显示的查询结果完全没有改变:
query = {
"_source": ["title", "raw_text", "i_cite", "cite_me", "relevancia_0", "cdf", "cite_me_semestre", "cdf_grupo", "ramo"],
"query": {
"query_string":
{
"fields": ["raw_text", "i_cite", "title"],
"query": termo
},
"filter": {
"bool": {
"should": [
{ "term": {"result": in decision_results}}
]
}
}
},
"sort": [
{"relevancia_0": {"order": "desc"}},
{"_script": {
"type": "number",
"script": {
"lang": "painless",
"source": "Math.round(doc['cdf'].value*1e3)/1.0e3"
},
"order": "desc"}},
{"cite_me_semestre": {"order": "desc"}},
{"cite_me": {"order": "desc"}},
{"date": {"order": "desc"}},
"_score"
],
"highlight": {
"fragment_size": 250,
"number_of_fragments": 1,
"type": "plain",
"order": "score",
"fragmenter": "span",
"pre_tags": "<span style='background-color: #FFFF00'>",
"post_tags": "</span>",
"fields": {"raw_text": {}}
}
}
我希望只返回“ decision_results”列表中具有“结果”值的文档
答案 0 :(得分:0)
我认为您应该阅读有关bool查询的更多信息...
将此结构复制到您的查询中:
GET _search
{
"query": {
"bool": {
"must": {
"query_string":
{
"fields": ["raw_text", "i_cite", "title"],
"query": termo
}
},
"filter": {
"term": {"result": in decision_results}
}
}
}
}
主查询块位于bool查询的“ must”块中,而filter块的“ term”子句位于bool查询的过滤器块中。不确定上述示例的语法,尚未测试,但应该与之接近。
还要确保您的网站正确处理了“ term”:{“ result”:in Decision_results} 部分。 decision_results 中的是否已正确翻译为您的term子句的有效json查询?如果这部分有问题,您可以提供有关其周围背景的更多信息,以便我们提供相关帮助。