如何增加所有搜索词的记录而不是 Elasticsearch 中所有搜索词的 OR?

How to boost records with all search terms than OR of all search terms in Elasticsearch?

我已经配置了默认的elasticsearch配置。当我搜索 "foo bar" 时,我得到的结果只有 "foo" 或 "bar" 在顶部,而 "foo" 和 "bar" 都不在顶部。

有没有一种方法可以提高包含所有搜索词的记录。

您可以将 "OR" 和 "AND" 逻辑组合为单个 bool 查询中的两个查询,例如

{
    "query": {
        "bool": {
            "must": {
                "match": {
                    "your_field": {
                        "query": "foo bar"
                    }
                }
            },
            "should": {
                "match": {
                    "your_field": {
                        "query": "foo bar",
                        "operator": "and"
                    }
                }
            }
        }
    }
}

其中must部分包含"OR"逻辑(operator未指定,默认为or)以确保至少匹配一个术语,而如果所有项都匹配,should 部分将提供提升,即 "AND" 逻辑。

您还可以进一步提供选项,以防您想要匹配和精确短语(使用 phrase 查询),例如http://marcobonzanini.com/2015/02/09/phrase-match-and-proximity-search-in-elasticsearch/