首页 文章

是否有可能确保与Elasticsearch中的搜索匹配?

提问于
浏览
1

我试图弄清楚如何在Elasticsearch中实现以下内容,并且感觉好像我之前已经阅读过如何操作文档但却无法再找到它 .

我将搜索3个字段; profileIds, Headers 和描述 .

对于 Profiles ID我只是在寻找一个完全匹配的术语,这很简单 .

我将有一个与 Headers 和描述相匹配的短语列表,但我只想匹配,如果总共有3个或更多匹配任何关键字的 Headers 或描述(它不必是相同的关键字相同的领域) .

我知道我应该有一个嵌套或查询设置如下:(匹配配置文件ids,( Headers 上有3个匹配或任何关键字的描述))但我正在努力的部分是说“3匹配” .

这在Elasticsearch中是否可行?

1 回答

  • 0

    您可以使用bool queryterms query并使用 minimum_should_match 一起尝试 .

    例:

    {
      "query": {
         "bool": {
            "must": [
               {
                  "term": {
                     "profile_ids": {
                        "value": "42"
                     }
                  }
               }
            ],
            "should": [
               {
                  "terms": {
                     "title": ["foo", "bar", "baz"],
                     "minimum_should_match": 3
                  }
               },
               {
                  "terms": {
                     "description": ["a", "b", "c", "d"],
                     "minimum_should_match": 3
                  }
               }
            ],
            "minimum_should_match": 1
         }
      }
    }
    

    因此,两个 terms 查询必须至少匹配3个关键字 . 然后这两个中的一个应匹配,而_1074679必须始终匹配 .

    请注意,如果您的关键字少于3个,则 terms 查询将匹配,如果所有字词匹配 .

相关问题