带有nodejs的Elasticsearch英语分析器

时间:2017-07-26 07:24:27

标签: node.js elasticsearch

首次尝试使用带有nodejs的aws托管服务实现弹性搜索。提到官方文档并想出了这个:

//1. create index
client.indices.create({ index: 'products' });

//2. mapping
client.indices.putMapping({
        index: 'products',
        type: 'products',
        body: {
            properties: {
                'product_name': {
                    'type': 'string',
                    "analyzer": "english"
                },
                'product_description': {
                    'type': 'string',
                    "analyzer": "english"
                }
            }
        }
    });

//3. import documents..
product_name: Testing


//4. search 
client.search({
        index: 'products',
        type: 'products',
        q: keywords,
        analyzer: 'english',
        size: 10
    });

现在,如果我搜索“测试”或“令牌测试”,则会返回1个结果。但是,如果我测试传递'Test'或'Tist'作为关键字,那么分析仪似乎没有提升,我没有得到任何结果。

更新:根据@Val回答添加了分析器:'english',但仍然没有'Test'或'Tist'的结果。

1 个答案:

答案 0 :(得分:0)

这是因为在使用%参数时,会进行q查询,输入字符串的默认分析器是query_string分析器。

你有两个选择:

一个。在查询字符串中包含字段名称:

standard

B中。指定client.search({ index: 'products', type: 'products', q: 'product_name:' + keywords, <--- modify this size: 10 }); 作为查询时间分析器,以生成与先前编制索引相同的标记:

english