为什么Elasticsearch没有检测到我定制的分析仪?

时间:2016-07-02 12:07:04

标签: node.js elasticsearch indexing full-text-search analyzer

我制作了一个索引"用户名"使用定制的分析仪,称为“自动完成”':

client.indices.create({
    index: 'user-name',
    type: 'text',
    settings: {
      analysis: {
        filter: {
          autocomplete_filter: {
            type: 'edge-ngram',
            min_gram: 1,
            max_gram: 20
          }
        },
        analyzer: {
          autocomplete: {
            type: 'custom',
            tokenizer: 'standard',
            filter: [
              'lowercase',
              'autocomplete_filter'
            ]
          }
        }
      }
    }
  }

然后我尝试通过尝试在映射中使用它来引用这个自定义分析器:

    client.indices.putMapping({
        index: 'user-name',
        type: 'text',
        body: {
          properties: {
            name: {
              type: 'string',
              analyzer: 'autocomplete',
              search_analyzer: 'standard'
            }
          }
        }
      })

然后我收到了这个错误:"原因":"找不到字段[name]"的分析器[autocomplete]。为什么我的自动完成分析仪没有被检测到?感谢。

1 个答案:

答案 0 :(得分:1)

你快到了。您只需将索引body放在client.indices.create({ index: 'user-name', type: 'text', body: { settings: { analysis: { filter: { autocomplete_filter: { type: 'edge-ngram', min_gram: 1, max_gram: 20 } }, analyzer: { autocomplete: { type: 'custom', tokenizer: 'standard', filter: [ 'lowercase', 'autocomplete_filter' ] } } } } } } 参数中:

CREATE TRIGGER test
ON Table_1
INSTEAD OF INSERT, UPDATE, DELETE
AS
    BACKUP DATABASE test 
    TO DISK = 'C:\test.bak'  WITH DIFFERENTIAL,
    NAME = N'pcrm-Full Database Backup', 
    SKIP, NOREWIND, NOUNLOAD,  STATS = 50
GO