如何使用列表中的项目过滤Elasticsearch查询

时间:2019-09-30 18:41:09

标签: list elasticsearch filter

我正在运行一个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”列表中具有“结果”值的文档

1 个答案:

答案 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查询?如果这部分有问题,您可以提供有关其周围背景的更多信息,以便我们提供相关帮助。