gpt4 book ai didi

python - 使用 Elastic search dsl python analyze api

转载 作者:行者123 更新时间:2023-12-02 23:18:52 25 4
gpt4 key购买 nike

如何在 Elasticsearch 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).)*"正在分解?实际上它看起来像 '!'不能用作正则表达式。如果默认分析仪无法获取 '!',我如何更改分析仪作为正则表达式字符?

我是新手,很难准确地将分析方法放入我的代码中。请帮忙。

最佳答案

我不确定你到底想要达到什么目的。如果您发布了一个 CURL 查询,它可以满足您的需求,则可以更轻松地将其转换为 Elasticsearch DSl 或 elasticsearch-py 界面。

如果您正在寻找 _analyze 的替代品方法,但在 Python 中,您可以使用 elasticsearch-py 实现它,但我不确定您是否可以使用 Elasticsearch DSL 来实现。所以假设我想看看我的字符串 jestem biały miś 的结果如何。使用名为 morfologik 的分析器进行分析.使用 CURL 我会运行:

$ 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
}
]
}

为了使用 elasticsearch-py 获得相同的结果,您可以运行以下命令:

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ś",
}
)
analyze 的输出方法与上面的 CURL 请求相同:

{'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}]}

关于python - 使用 Elastic search dsl python analyze api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51777582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com