ElasticSearch搜索与空白带有分隔符的文本上的查询,而不是冲刺

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch搜索与空白带有分隔符的文本上的查询,而不是冲刺相关的知识,希望对你有一定的参考价值。

我已经索引的数据(人)用的firstName =“让 - 马克”,我想能够找到使用不同的查询组合这个人,例如为名字“让 - 马克”,它应该是可能的搜索着:“让马克”和“让马克”(与空白或破折号)

这里是映射:

  "firstName": 
    "type": "keyword",
    "normalizer": "keyword_normalizer",
    "fields": 
      "analysed": 
        "type": "text",
        "analyzer": "hyphen_analyzer",
        "search_analyzer": "standard",
        "fielddata": true
      
    
  

而设置:

"char_filter": 
    "allowOnlyChar": 
        "pattern": "[^A-Za-z]",
        "type": "pattern_replace",
        "replacement": " "
    


"analyzer": 
    "hyphen_analyzers": 
        "filter": "lowercase",
        "char_filter": [
            "allowOnlyChar"
        ],
        "type": "custom",
        "tokenizer": "standard"
    

我是说我保持冲刺的人,但与空白查询没有结果

我用弹性6.2.4

答案

定义你的分析:

"char_filter": 
    "allowOnlyChar": 
        "pattern": "[^A-Za-z]",
        "type": "pattern_replace",
        "replacement": " "
    


"analyzer": 
    "yourAnalyzer": 
        "filter": "lowercase",
        "char_filter": [
            "allowOnlyChar"
        ],
        "type": "custom",
        "tokenizer": "standard"
    

当然指数的这种分析仪的文档。 “分析”: “yourAnalyzer”

文档链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-replace-charfilter.html

以上是关于ElasticSearch搜索与空白带有分隔符的文本上的查询,而不是冲刺的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch:Async search API

Elasticsearch:Async search API

Angular中带有关键字标签的文本区域

Elasticsearch系列---近似匹配

Elasticsearch 检索相关

在字段名称中搜索带有破折号的 elasticsearch 字段