首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何关闭自动完成易用搜索match_phrase或match_phrase_prefix?

如何关闭自动完成易用搜索match_phrase或match_phrase_prefix?
EN

Stack Overflow用户
提问于 2021-03-02 12:40:58
回答 2查看 97关注 0票数 0

我有ES数据,它包含一个类型为nametext字段。我必须使用小写输入进行搜索,而实际名称可能使用小写和大写符号。我只需要确切的(但不区分大小写的)名称。

我尝试使用match_phrase (以及match_phrase_prefix)。但是它返回自动完成的结果。类似查询

代码语言:javascript
复制
"match_phrase": {
  "name": {
    "query": "apple iphone 11"
  }
}

返回两项:

代码语言:javascript
复制
{
"id": "547",
"name": "Apple iPhone 11",
}

代码语言:javascript
复制
{
"id": "253",
"name": "Apple iPhone 11 Pro",
}

我只需要一个与id: 547,即那里没有额外的符号在名称。

Elastcsearch是否有找到确切名称的工具,但在不区分大小写且不自动完成的情况下?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-04 12:18:51

我通过一个简单的脚本实现了我的需求:

代码语言:javascript
复制
"filter": [
    {
        "script": {
            "script": {
                "source": "doc[params.nameField].value != null && doc[params.nameField].value.equalsIgnoreCase(params.name)",
                "lang": "painless",
                "params": {
                    "name": "apple iphone 11",
                    "nameField": "name.exact"
                }
            },
            "boost": 1.0
        }
    }
]
票数 0
EN

Stack Overflow用户

发布于 2021-03-02 14:07:00

Elastcsearch有找到确切名称的工具吗?

是的,弹性搜索为精确搜索提供了“关键字”类型。

在不区分大小写的窗体中,而没有自动完成?

您可以使用带有小写过滤器的正火器

  1. 在索引设置中添加规范化器

PUT /so_索引/

代码语言:javascript
复制
{
   "settings":{
      "analysis":{
         "normalizer":{
            "name_normalizer":{
               "type":"custom",
               "filter":[
                  "lowercase"
               ]
            }
         }
      }
   }
}
  1. 映射(要么使用名称作为关键字进行精确匹配,要么同时使用关键字和文本进行精确搜索和全文搜索)

PUT /so_index/_映射

代码语言:javascript
复制
{
  "properties": {
    "name": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword",
          "normalizer": "name_normalizer"
        }
      }
    }
  }
}
  1. 使用匹配或术语查询

GET /so_index/_search

代码语言:javascript
复制
{
  "query": {
    "match": {
      "name.keyword": "apple iphone 11"
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66439588

复制
相关文章

相似问题

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