在使用与Elasticsearch-py匹配的查询时,是否有任何自定义分析器的建议?

时间:2019-08-17 15:51:15

标签: python elasticsearch elasticsearch-dsl elasticsearch-py elasticsearch-dsl-py

在对Elasticsearch-py使用查询匹配时,我无法应用自定义分析器。

我定制了一个名为custom_lowercase_stemmed的分析器,并使用es.indices.put_settings更新了索引设置。

但是,我搜索时找不到分析仪。

我还查看了analyzer中的参数es.search,但返回错误:

  

..无法识别的参数:[分析仪]

我可以从定制分析仪那里获得任何建议吗?谢谢!

query_body = {
     "query": {
         "match": {
            "employer":{
                "query": txt,
                "fuzziness": 'AUTO',
                "analyzer" : 'custom_lowercase_stemmed'
            }
        }
    }
}
es.search(index='hello',body=query_body)

这是完整的错误:

RequestError: RequestError(400, 'search_phase_execution_exception', '[match] analyzer [custom_lowercase_stemmed] not found')

2 个答案:

答案 0 :(得分:0)

我认为您必须确保具备以下条件:

  • 正确设置您的Configuration。在您的情况下,应在设置中将“ custom_lowercase_stemmed”字段用作分析器。您还可以定义要停止的单词。

  • 使用Python ES客户端,您必须将分析器作为方法.search()的参数发送。检查docs。但是,您可以尝试按原样运行查询。我在分析器上玩的还不够。

希望这会有所帮助! :D

答案 1 :(得分:0)

确保在映射时指定了分析仪,并确保查询正确的字段。

对于有关删除重复名称的匹配问题的疑问,在术语级别和短词中,模糊性和通配符参数将是最合适的!

干杯, 闵汉(: