查询Elasticsearch并使用分析器

时间:2016-06-13 08:16:50

标签: elasticsearch yii2 elasticsearch-2.0

我使用elasticsearch扩展在yii2框架上使用elasticsearch。

我必须在elasticsearch中索引一些位置数据,如下所示:

  • ID
  • 国家名称
  • Statename的
  • 的cityName
  • addressName

我可以根据提供的数据查找位置,例如:

  • 其中countryName ='美国'和stateName =' new york'
  • 其中cityName ='百老汇'
  • 其中countryName ='美国'和stateName喜欢'%york'

它应该不区分大小写。

目前,当我进行查询时,如果案例不匹配,我将无法获得任何结果。

我的映射是:

properties :
    id : 
        type : long
    countryName
        type : string
        fields :
            raw :
                type : string
                index : not_analyzed
    stateName
        type : string
        fields :
            raw :
                type : string
                index : not_analyzed
    cityName
        type : string
        fields :
            raw :
                type : string
                index : not_analyzed
    addressName
        type : string
        fields :
            raw :
                type : string
                index : not_analyzed

我添加了一个分析仪:

analysis :
    analyzer : 
        analyzer_keyword : 
            tokenizer : keyword
            filter : lowercase

当我进行查询countryName='United States'时,我什么也得不到,但如果我countryName='united states',我会得到匹配的记录

当我countryName.raw='United States'时,我会得到匹配的记录,但如果它是小写的,我就什么都得不到。

对于stateNamecityNameaddressName,如果我进行如下查询: stateName='New York'或将其更改为小写我不会得到任何结果。

如果我选择stateName.rawcityName.rawaddressName.raw,它就像countryName.raw

一样

任何人都可以帮我吗?

0 个答案:

没有答案