首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elasticsearch7.10了解匹配的查询

elasticsearch7.10了解匹配的查询
EN

Stack Overflow用户
提问于 2020-12-13 21:28:30
回答 1查看 34关注 0票数 0

我有映射

代码语言:javascript
复制
'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',
                    }
                }
            }
        }
    }
}

并希望自动完成‘name’和‘aliases.name’。使用下一个查询

代码语言:javascript
复制
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": [
      ""
    ]
  }
}

我想要显示原始名称,如果查询匹配它和原始名称+别名它匹配别名和不匹配的名称。例如:

尼科尔·费尔南多(Jame Fernand,Tom Fernand)

对于查询'Fern‘,我需要显示'Nicol Fernand',对于'jam’,我需要显示'Nicol Fernand (Jame Fernand)‘。

在这种情况下,突出显示不起作用。我怎样才能获得这种行为呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-13 22:37:54

您可以像这样使用named queries

代码语言:javascript
复制
{
  "query": {
    "dis_max": {
      "queries": [
        {
          "function_score": {
            "query": {
              "multi_match": {
                "_name": "matched_names_field",      <--
                "query": "nic",
                ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65276173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档