今天在做elasticsearch的过程中遇上大坑,填坑过程
在python中调用elasticsearch的indices.analyze接口的过程中,本来看网上的文章是这样写的
result = es.indices.analyze(index=index,body=text,analyzer='ik_max_word' params={'filter':["lowercase"]} )
调试过程中,WTF,为什么走不动,看错误提示是在这一句,然后就ctrl点进去analyze方法。
一看就发现,原来源码中没有analyzer这个参数啊,为啥资料有的!?不管了,赶紧看看究竟怎么配置。原来源码中给出了在body这个参数配置分析器和文档类型:
:arg body: Define analyzer/tokenizer parameters and the text on which
the analysis should be performed
这就好办了,但是我试过ABCDEFG种方法,发现都配置不对,而且网上资料为0,是零........,然后看到后面params的方法,突然想到会不会就是按照elasticsearch那样子写字典呢,那么elasticsearch是怎么写分析器的呢?是这样:
GET _analyze
{
"analyzer" = "ik_max_word",
"text":需要分析的文档
}
一看就好办了,照抄一波
result= es.indices.analyze(index=index,body={'text':text,'analyzer':"ik_max_word"}, params={'filter':["lowercase"]} )
成功了,这里注意,text是我之前就传进来的参数,所以不要写成“text ”