Elasticsearch和word_delimiter标记过滤器

时间:2017-02-27 11:41:22

标签: elasticsearch delimiter word

我一直在阅读elasticsearch的这篇文档: https://www.elastic.co/guide/en/elasticsearch/reference/1.7/analysis-word-delimiter-tokenfilter.html

同时在网上寻找例子。 不幸的是,不仅仅有一些例子,其中大多数都没有用。

如果有人可以发布或举例说明如何在elasticsearch中使用word_delimeter标记过滤器,我将非常感激。

感谢。

2 个答案:

答案 0 :(得分:3)

Elasticversion - 5.2

尝试以下映射

PUT demo
{
    "settings": {
        "analysis": {
          "analyzer": {
            "index_analyzer_v1" : {
              "tokenizer" : "whitespace",
              "filter" : [ "word_delimeter"]
            }
          },
          "filter": {
            "ngram_filter" : {
              "type" : "nGram",
              "min_gram": 1,
          "max_gram": 10,
          "token_chars": [
            "letter",
            "digit"
          ]
            },
            "word_delimeter" : {
              "type" : "word_delimiter",
              "generate_number_parts" : true,
              "catenate_words" : true,
              "catenate_numbers": true,
              "preserve_original" : true,
              "stem_english_possessive": true

            },
            "stop_words" : {
              "type": "stop",
          "stopwords": ["and", "is", "the", "we", "in", "are", "was", "were", "of"]
            }
          }
        }
    },
    "mappings": {
            "product": {
                "dynamic": "strict",
                "properties": {
                  "name": {
                    "type": "text",
                    "analyzer": "index_analyzer_v1"
                  }
                }
            }
        }
}

索引以下文件

POST demo/product
{
  "name":"SH-09"
}

运行以下查询

POST demo/_search
{
  "query": {"bool": {"must": [
    {"term": {
      "name": {
        "value": "09"
      }
    }}
  ]}}
}

如果您想查看存储在倒排索引中的值,请运行以下查询

GET demo/_analyze?analyzer=index_analyzer_v1&text=SH-09

希望这有帮助

答案 1 :(得分:0)

我知道这个问题很老,但是无论如何... 我无法评论,因为我没有声望点,但是,如果您尝试搜索“所有人”,则上述答案中没有提供“-”,如果您要在“所有人”中搜索“身体”,也许可以使用简单的通配符来解决您。 https://www.elastic.co/guide/en/elasticsearch/reference/6.8/query-dsl-wildcard-query.html

我希望它有用