代码之家  ›  专栏  ›  技术社区  ›  Rose

Elasticsearch:术语搜索不适用于特殊字符

  •  0
  • Rose  · 技术社区  · 7 年前

    我正在使用Elasticsearch最新版本5.6.4。我想索引特殊字符并搜索字段 标题特殊的 . 以下是我的映射:

    PUT index1
        {
        "mappings": {
              "isContainer:false": {
                "properties": {
                  "connectorSpecific": {
                    "properties": {
    
                  "title": {
                    "type": "text",
                    "store": true,
                    "fields": {
                      "special":{
                         "type": "text",
                         "analyzer": "special",
                         "search_analyzer": "special"
                    }
                    }
                  }
                }
              }
            },
            "settings": {
              "index": {
                "analysis": {
                  "analyzer": {
    
                      "special": {
                      "filter": [
                        "lowercase"
                      ],
                      "tokenizer": "whitespace"
                    }
                  }
    
                }
                }
                }
              }
            }
          }
    

    当我在Kibana中使用术语查询时,

    GET index1/_search
    {
      "query": {
        "term": {
          "title.special": {
            "value": "-unconstrained_net_use_inf_tw"
          }
        }
      }
    }
    

    一无所获。但当我进行匹配搜索时,文档确实会返回。例如:。

    GET index1/_search
    {
      "query": {
        "match": {
          "title.special": {
            "value": "-unconstrained_net_use_inf_tw"
          }
        }
      }
    }
    

    我的映射中有什么错误吗?如何使术语查询在诸如*、-、+等特殊字符上工作。如有任何帮助,我们将不胜感激

    1 回复  |  直到 7 年前
        1
  •  2
  •   Lupanoide    7 年前

    术语查询使用关键字数据类型。标题special是一种文本数据类型。为了使术语查询有效,您必须更改标题。特殊映射 看看这里,题为“为什么术语查询与我的文档不匹配”的部分? https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html