elasticsearch ElasticSearch返回分析聚合的非分析版本,elasticsearch,autocomplete,aggregate,elasticsearch,Autocomplete,Aggregate" /> elasticsearch ElasticSearch返回分析聚合的非分析版本,elasticsearch,autocomplete,aggregate,elasticsearch,Autocomplete,Aggregate" />

elasticsearch ElasticSearch返回分析聚合的非分析版本

elasticsearch ElasticSearch返回分析聚合的非分析版本,elasticsearch,autocomplete,aggregate,elasticsearch,Autocomplete,Aggregate,我在使用弹性搜索中的数据实现自动完成功能时遇到问题。。我的文档目前具有这种结构 PUT mainindex/books/1 { "title": "The unread book", "author": "Mario smith", "tags": [ "Comedy", "Romantic" , "Romantic Comedy","México"] } 所有字段都编制了索引,标记的映射是一个小写的ascifolding过滤器 现在需要的功能是,如果用户键入mario-smi

我在使用弹性搜索中的数据实现自动完成功能时遇到问题。。我的文档目前具有这种结构

PUT mainindex/books/1
{
  "title": "The unread book",
  "author": "Mario smith",
  "tags":  [ "Comedy", "Romantic" , "Romantic Comedy","México"] 
}
所有字段都编制了索引,
标记的映射是一个
小写的ascifolding
过滤器

现在需要的功能是,如果用户键入
mario-smith-rom
…,我需要建议以
rom
开头的标记。。但只适用于马里奥·史密斯的书。。这需要将文本分解为多个组件。。我已经得到了那部分。。当前查询如下所示

{
  "query": {
    "query_string": {
      "query": "mario smith",
      "default_operator": "AND"
    }
  },
  "size": 0,
  "aggs": {
    "autocomplete": {
      "terms": {
        "field": "suggest",
        "order": {
          "_term": "asc"
        },
        "include": {
          "pattern": "rom.*"
        }
      }
    }
  }
}
这将返回预期的结果,即用户接下来应根据查询键入的单词列表。。还有他开始键入的单词的前缀

{
    "aggregations" : {
        "autocomplete" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
                {
                    "key" : "romantic comedy",
                    "doc_count" : 4
                },
                {
                    "key" : "romantic",
                    "doc_count" : 2
                }
            ]
        }
    }
}
现在的问题是,我不能向用户展示这些单词,因为它们是小写的,没有重音,像墨西哥这样的单词被索引了。。在我的语言里有些词看起来很奇怪。。如果我从
标记
字段中删除过滤器,则值将正确保存到索引中。但是模式
rom.*
将不匹配,因为用户键入的是不同的大小写,可能没有使用正确的重音

一般来说,需要的是获取一组经过筛选的文档。。聚合它们的标记,以自然格式返回它们。。但是过滤掉那些没有相同前缀的。以不区分大小写/重音的方式筛选它们

附言:我看到了一些关于该领域有两个版本的建议,一个是分析版,一个是原始版。。但是似乎不能通过一个过滤而返回另一个

有人知道如何执行此查询或实现此功能吗