Elasticsearch:试图找出合适的搜索查询算法

Elasticsearch: Trying to find out appropriate searching query algorithm

我想要弹性搜索的结果,输入的搜索字符串与文档的多个字段匹配,并列出索引的结果是字段匹配记录的最大数量显示在第一位,字段匹配记录的最少数量显示在最后在列表中。

例如:如果我正在搜索关键字 "test" 并且我在一个索引记录中有超过 12 个字段。

现在如果测试在 1 条记录的 10 个字段中匹配 然后匹配另一条记录中的 6 个字段,然后 然后是另一条记录中的 2 个字段。

我想显示列表中的第一条记录,其中搜索字符串与最大字段匹配数和最少字段匹配数相匹配。

根据此示例,第一个记录显示有 10 个字段与搜索字符串匹配,第二个有 6 个字段匹配,第三个有 2 个字段匹配并继续...

如果能得到一些好的建议或例子就好了。

这是 elasticsearch 的默认行为。匹配次数越多的文档得分越高

查询:

{
  "query": {
    "query_string": {
      "default_field": "*", -->search in all fields
      "query": "test"
    }
  }
}

结果:

{
        "_index" : "index18",
        "_type" : "_doc",
        "_id" : "iSCe6nEB8J88APx3YBGn",
        "_score" : 0.9808291,  --> scored higher as two fields match
        "_source" : {
          "field1" : "test",
          "field2" : "test"
        }
      },
      {
        "_index" : "index18",
        "_type" : "_doc",
        "_id" : "iiCe6nEB8J88APx3ghF-",
        "_score" : 0.4700036,
        "_source" : {
          "field1" : "test",
          "field2" : "abc"
        }
      }