elasticsearch7.10了解匹配的查询

ryoqjall  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(1)|浏览(397)

我有Map

'properties' : {
    'names' : {
        'types' : 'text',
        'fields' : {
            'suggest' : {
                'type' : 'search_as_you_type',
            }
        }
    },
    'aliases' : {
        'type' => 'nested',
        'properties' : {
            'names' : {
                'type' : 'text',
                'fields' : {
                    'suggest' : {
                        'type' : 'search_as_you_type',
                    }
                }
            }
        }
    }
}

并希望自动完成“names”和“aliases.names”。使用下一个查询

GET people/_search
{
  "query": {
    "dis_max": {
      "queries": [
        {
          "function_score": {
            "query": {
              "multi_match": {
                "query": "nic",
                "type": "bool_prefix",
                "fields": [
                  "names.suggest",
                  "names.suggest._2gram",
                  "names.suggest._3gram"
                ]
              }
            },
            "field_value_factor": {
              "field": "rating"
            },
            "boost_mode": "replace"
          }
        },
        {
          "function_score": {
            "query": {
              "nested": {
                "path": "aliases",
                "inner_hits": {},
                "query": {
                  "multi_match": {
                    "query": "nic",
                    "type": "bool_prefix",
                    "fields": [
                      "aliases.names.suggest",
                      "aliases.names.suggest._2gram",
                      "aliases.names.suggest._3gram"
                    ]
                  }
                }
              }
            },
            "field_value_factor": {
              "field": "rating"
            },
            "boost_mode": "replace"
          }
        }
      ]
    }
  },
  "highlight": {
    "fields": {
      "names.suggest": {
      }
    },
    "fragment_size": 10,
    "pre_tags": [
      ""
    ],
    "post_tags": [
      ""
    ]
  }
}

我想显示原始名称,如果查询匹配它和原始名称+别名它匹配别名和不匹配的名称。例如:
尼科尔·费尔南多(杰米·费尔南多、汤姆·费尔南多)
对于查询'fern'我需要显示'nicol fernand',对于'jam'我需要显示'nicol fernand(jame fernand')
在这种情况下,突出显示不起作用。我怎么会有这种行为?

7kqas0il

7kqas0il1#

可以使用如下命名查询:

{
  "query": {
    "dis_max": {
      "queries": [
        {
          "function_score": {
            "query": {
              "multi_match": {
                "_name": "matched_names_field",      <--
                "query": "nic",
                ...

相关问题