ElasticSearch中的奇怪搜索

rbpvctlc  于 12个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(185)

我在elasticsearch中有一些数据集。

curl -XPOST 'localhost:9200/_search?pretty' -d
'{
    "query": {
        "query_string": { 
            "fields": ["258"],
            "query": "*toco*"
        }
    }
}'

字符串
我得到一个结果,其中字段258是[PhotoComment]。但是,如果您将查询更改为:

curl -XPOST 'localhost:9200/_search?pretty' -d
'{
    "query": {
        "query_string": { 
            "fields": ["258"],
            "query": "*omme*"
        }
    }
}'


则搜索结果为空。
解释为什么会发生这种情况?

ftf50wuq

ftf50wuq1#

我设法找到了这种奇怪行为的原因。它在分析中使用的一个过滤器中。设置如下:

"analysis": {
     "analyzer": {
         "default": {
             "type": "custom",
             "tokenizer": "standard",
             "filter": [
                 "lowercase",
                 "english_stemmer",
             ]
         }
     },
     "filter": {
         "english_stemmer": {
             "type": "snowball",
             "language": "English"
         }
     }
}

字符串
调用分析器,过滤器“english_stemmer”后的文本“[PhotoComment]”变为“photocom”,文本“omme”变为“omm”,因此后者不包含在“photocom”中,未找到记录。
我没有找到一个解释为什么“english_stemmer”过滤器的行为是这样的。

相关问题