如何在弹性搜索dsl python中使用默认的_analyze?
我的查询如下:
query = Q('regexp', field_name = "f04((?!z).)*")
search_obj = Search(using = conn, index = index_name, doc_type = type_name).query(query)
response = search_obj[0:count].execute()
我将analyze() method
放在哪里,以便查看"f04((?!z).)*"
的术语如何?实际上,看来'!'
不能用作正则表达式。如果默认分析器无法将'!'
用作正则表达式字符,该如何更改分析仪?
我是一个新手,几乎没有发现很难准确地将分析方法放入我的代码中。请帮助。
答案 0 :(得分:0)
我不确定您要实现什么目标。如果发布的CURL查询满足您的要求,则可以更轻松地将其转换为Elasticsearch DSl或elasticsearch-py接口。
如果您正在寻找ct = ct.melt(id_vars=['period', 'gender'])
g = sns.catplot(x="period", y="value", hue="variable", col='gender', data=ct, kind="bar", height=4, aspect=2);
方法的替代方法,但是在Python中,您可以使用elasticsearch-py实现它,但是我不确定您可以使用Elasticsearch DSL来实现。因此,假设我想查看如何使用名为_analyze
的分析器分析字符串jestem biały miś
的结果。使用CURL我将运行:
morfologik
为了使用elasticsearch-py获得相同的结果,您可以运行以下命令:
$ curl -XGET "http://localhost:9200/morf_texts/_analyze" -H 'Content-Type: application/json' -d'
{
"analyzer": "morfologik",
"text": "jestem biały miś"
}'
{
"tokens": [
{
"token": "być",
"start_offset": 0,
"end_offset": 6,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "biały",
"start_offset": 7,
"end_offset": 12,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "miś",
"start_offset": 13,
"end_offset": 16,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "misić",
"start_offset": 13,
"end_offset": 16,
"type": "<ALPHANUM>",
"position": 2
}
]
}
from elasticsearch import Elasticsearch
from elasticsearch.client import IndicesClient
client = Elasticsearch()
indices_client = IndicesClient(client)
indices_client.analyze(
body={
"analyzer": "morfologik",
"text": "jestem biały miś",
}
)
方法的输出与上述CURL请求的输出相同:
analyze