问题描述:
ES目前使用的是IK分词器,查询时的分词也是IK,但现在想查询走的分词还是ES的 Standard Analyzer
es_result = get_es_connect().search(
index=index,
doc_type=_type,
body=dsl,
timeout=timeout
)
使用python语言编码, 这个search有个analyzer参数,指定为standard报错.
请问这个问题是在mapping中指定呢,还是可以在方法中指定,请指点一二?
5 个回复
kennywu76 - Wood
赞同来自: qw8613243 、elasticStack 、Merrizee 、cccthought 、yuanzhi
1. 在mapping里指定search_analyzer,例如
2.使用URL Search的时候,指定analyzer参数 ,文档参考: https://www.elastic.co/guide/e ... .html , 对应的python代码范例: 要注意的是,这里的analyzer只能和q这个参数搭配使用。 你的代码报错,是因为用的body参数,这个参数是没有analyzer参数搭配的。
3.使用Request Body Search,文档参考: https://www.elastic.co/guide/e ... .html ,对应的python代码范例: 注意这个时候,analyzer是写到dsl里面的match query。
zyb1994111
赞同来自: elasticStack
luman
赞同来自: FuNian
{
"query": {
"match": {"title":{"query" : "洗衣液","analyzer" : "standard"}}
}
}
zyb1994111
赞同来自:
elasticStack - 90后it大数据男
赞同来自: