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

在弹性搜索索引中插入一份文件,并由分析员进行分析

  •  1
  • mel  · 技术社区  · 9 年前

    我定义了一个分析器,如:

    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"
     }
    

    我在期待类似这样的事情(我假装堵塞):

    { “id”:1452, “style”:“摇滚”, “乐器”:“击球手,电吉他,吉他,钢琴” }

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   Andrei Stefan    9 年前

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

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

    甚至在索引之前,您可以使用 _analyze API :

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