如何使用 elasticsearch 的 SimpleQueryString 函数?
How do i use SimpleQueryString function of elasticsearch?
我正在尝试编写一个 django 应用程序,并在其中使用 elasticsearch 和 python 的 elasticsearch-dsl 库。我不想创建所有 switch-case 语句,然后相应地传递搜索查询和过滤器。
我想要一个自己进行解析的函数。
例如如果我通过 "some text url:github.com tags:es,es-dsl,django",
该函数应输出相应的查询。
我在 elasticsearch-dsl 文档中搜索它并找到了一个进行解析的函数。
https://github.com/elastic/elasticsearch-dsl-py/search?utf8=%E2%9C%93&q=simplequerystring&type=
但是,我不知道如何使用它。
我试过 s = Search(using=client).query.SimpleQueryString("1st|ldnkjsdb")
,但显示解析错误。
谁能帮帮我?
我猜你是在询问 elasticsearch-dsl 与查询字符串的用法,就像你正在向 elasticsearch api 发出带有 json 数据的请求一样。如果是这样的话,这就是你将如何使用 elasticsearch-dsl:
假设您在 query 变量中有这样的查询:
{
"query": {
"query_string" : {
"default_field" : "content",
"query" : "this AND that OR thus"
}
}
}
现在执行此操作:
es = Elasticsearch(
host=settings.ELASTICSEARCH_HOST_IP, # Put your ES host IP
port=settings.ELASTICSEARCH_HOST_PORT, # Put yor ES host port
)
index = settings.MY_INDEX # Put your index name here
result = es.search(index=index, body=query)
您可以只将 SimpleQueryString
插入 Search
对象,而不是字典将元素作为对象的参数发送。
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search
from elasticsearch_dsl.query import SimpleQueryString
client = Elasticsearch()
_search = Search(using=client, index='INDEX_NAME')
_search = _search.filter( SimpleQueryString(
query = "this + (that | thus) -those",
fields= ["field_to_search"],
default_operator= "and"
))
很多elasticsearch_dsl
简单地将字典表示更改为类函数,使代码看起来像pythonic,并避免使用难以阅读的elasticsearch JSON。
我正在尝试编写一个 django 应用程序,并在其中使用 elasticsearch 和 python 的 elasticsearch-dsl 库。我不想创建所有 switch-case 语句,然后相应地传递搜索查询和过滤器。
我想要一个自己进行解析的函数。 例如如果我通过 "some text url:github.com tags:es,es-dsl,django", 该函数应输出相应的查询。
我在 elasticsearch-dsl 文档中搜索它并找到了一个进行解析的函数。
https://github.com/elastic/elasticsearch-dsl-py/search?utf8=%E2%9C%93&q=simplequerystring&type=
但是,我不知道如何使用它。
我试过 s = Search(using=client).query.SimpleQueryString("1st|ldnkjsdb")
,但显示解析错误。
谁能帮帮我?
我猜你是在询问 elasticsearch-dsl 与查询字符串的用法,就像你正在向 elasticsearch api 发出带有 json 数据的请求一样。如果是这样的话,这就是你将如何使用 elasticsearch-dsl:
假设您在 query 变量中有这样的查询:
{
"query": {
"query_string" : {
"default_field" : "content",
"query" : "this AND that OR thus"
}
}
}
现在执行此操作:
es = Elasticsearch(
host=settings.ELASTICSEARCH_HOST_IP, # Put your ES host IP
port=settings.ELASTICSEARCH_HOST_PORT, # Put yor ES host port
)
index = settings.MY_INDEX # Put your index name here
result = es.search(index=index, body=query)
您可以只将 SimpleQueryString
插入 Search
对象,而不是字典将元素作为对象的参数发送。
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search
from elasticsearch_dsl.query import SimpleQueryString
client = Elasticsearch()
_search = Search(using=client, index='INDEX_NAME')
_search = _search.filter( SimpleQueryString(
query = "this + (that | thus) -those",
fields= ["field_to_search"],
default_operator= "and"
))
很多elasticsearch_dsl
简单地将字典表示更改为类函数,使代码看起来像pythonic,并避免使用难以阅读的elasticsearch JSON。