搜索与输入文本的 x % 匹配 match_query 的字段

Search for a field which matches x % of input text with match_query

我正在使用 match_query ElasticSearch,我遇到了标题中描述的问题。

字段名称:project.name

其映射:

    "project": {
        "properties": {
          "name": {
            "type": "string",
            "fields": {
              "raw": {
                "type": "string",
                "index": "not_analyzed"
              }
            }
          },
          "owner": {
            "type": "string",
            "index": "not_analyzed"
          }
        }
      }

有什么方法可以搜索 project.name 字段至少匹配查询字符串 60% 的所有文档?

TLDR:您可以在匹配查询中使用 minimum_should_match。

匹配查询是布尔类型。这意味着对提供的文本进行了分析,分析过程根据提供的文本构造了一个布尔查询。运算符标志可以设置为 orand 来控制布尔子句(默认为 or)。可以使用 minimum_should_match 参数设置要匹配的可选 should 子句的最小数量。可以设置分析器来控制哪个分析器将对文本执行分析过程。它默认为字段显式映射定义,或默认搜索分析器。

{
  "query": {
    "match": {
      "project.name": {
        "query": "the ranger 1",
        "minimum_should_match": "2"
      }
    }
  }
}

您还可以指定百分比和一些条件。看这里: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html