【问题标题】:How index the same field in multiple ways with wildcard in ElasticSearch如何在 ElasticSearch 中使用通配符以多种方式索引同一字段
【发布时间】:2021-07-20 02:21:51
【问题描述】:

我有一个字段(“名称”)的以下映射:

            "name": {
                "analyzer": "ngram_analyzer",
                "search_analyzer": "keyword_analyzer",
                "type": "text",
                "fields": {
                    "raw": {
                        "type": "keyword"
                    }
                }
            }

它工作正常,允许搜索文本和关键字。 根据 ES 文档:

https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html 字符串字段可以映射为全文搜索的文本字段和排序或聚合的关键字字段。

但我正在尝试扩展此映射以支持通配符搜索。

我尝试修改映射(例如,如下所示)但无法正常工作。

            "name": {
                "analyzer": "ngram_analyzer",
                "search_analyzer": "keyword_analyzer",
                "type": "text",
                "fields": [{
                    "raw": {
                        "type": "wildcard"
                    }
                }, {
                    "type": "keyword"
                }]
            }

也试过了,

            "name": {
                "analyzer": "ngram_analyzer",
                "search_analyzer": "keyword_analyzer",
                "type": "text",
                "fields": [{
                    "raw": {
                        "type": "wildcard"
                    }
                }, {"raw": {
                    "type": "keyword"
                }}]
            }

映射应如何允许名称作为文本、关键字和通配符进行搜索。

【问题讨论】:

    标签: amazon-web-services elasticsearch kibana


    【解决方案1】:

    您可以使用multi-fields 以多种方式索引name 字段。修改后的索引映射将是

    {
      "mappings": {
        "properties": {
          "name": {
            "type": "text",
            "analyzer": "ngram_analyzer",
            "search_analyzer": "keyword_analyzer",
            "fields": {
              "raw": {
                "type": "wildcard"
              },
              "keyword": {
                "type": "keyword"
              }
            }
          }
        }
      }
    }
    

    现在您可以使用name 进行基于文本的搜索,name.raw 进行通配符搜索,name.keyword 进行关键字搜索

    【讨论】:

    • @Matt Ryan 请仔细阅读答案,如果这能解决您的问题,请告诉我?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2021-06-20
    相关资源
    最近更新 更多