【问题标题】:Insert a document in an elasticsearch index and have it analysed by the analyser在 elasticsearch 索引中插入文档并由分析器分析
【发布时间】:2016-05-13 14:05:43
【问题描述】:

我已经定义了一个类似的分析器:

PUT /train-music
{
  "settings": {
    "analysis": {
      "analyzer": {
        "music_analyser": {
          "filter": [
            "lowercase",
            "snowball"
          ],
          "type": "custom",
          "tokenizer": "standard"
        }
      }
    }
  }
}

我的火车音乐索引的映射是这样的:

PUT /train-music/_mapping/music
{
  "properties": {
    "instruments": {
      "type": "string",
      "analyzer": "music_analyser"
    }
  }
}

然后我正在插入一个文档:

POST /train-music/music/1
{
 "id": 1452,
 "style": "rock",
 "instruments":"battery, electric guitar, guitar, piano"
 }

我期待类似的东西(我伪造了词干化):

{ “身份证”:1452, “风格”:“摇滚”, “乐器”:“面糊,电,吉他,吉他,钢琴” }

但是当我执行此操作时:GET /train-music/music/1 而不是让我的仪器字段很好地标记和阻止我得到与我的输入相同的东西。我应该怎么做才能让我的分析器在我想要索引的文档上工作,当我想要索引我的文档时应该添加一些东西吗?。

【问题讨论】:

    标签: elasticsearch indexing tokenize


    【解决方案1】:

    您不应该做任何事情,这是由 Elasticsearch 在幕后完成的。如果您想查看哪些术语已被实际编入索引,您可以使用

    GET /train-music/music/_search
    {
      "fielddata_fields": ["instruments"]
    }
    

    即使在索引之前,您也可以使用_analyze API:检查分析器是否正常工作:

    GET /train-music/_analyze
    {
      "analyzer" : "music_analyser",
      "text" : "battery, electric guitar, guitar, piano"
    }
    

    【讨论】:

    • 非常感谢 :)
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2014-02-25
    • 2014-02-15
    • 2018-11-09
    • 2012-11-04
    • 1970-01-01
    • 2021-12-05
    • 2016-12-31
    相关资源
    最近更新 更多