gpt4 book ai didi

elasticsearch - 使用Elasticsearch DSL的三级嵌套 bool 查询

转载 作者:行者123 更新时间:2023-12-02 22:56:05 27 4
gpt4 key购买 nike

使用ES 6.1,Python 3和elasticsearch-dsl,我得到了带有此映射的文档:

"mappings": {
"doc": {
"properties": {
"id": {"type": "text"},
"prop_a": {"type": "text"},
"prop_b": {
"type": "nested",
"include_in_root": "true",
"properties": {
"title": {"type": "text"},
"prop_bx": {
"type": "nested",
"properties": {
"name": {"type": "text"}
"descr": {"type": "text"}
}
}

例如:
{
"id": "abc123",
"prop_a": "foo",
"prop_b": {
"title": "some title",
"prop_bx": {
"name": "some name"
"descr": "lorem ipsum ipso facto"
}
}}

并且我可以成功查询2级(prop_b)属性“title”,例如:
s1=Search().using(client).query('nested', 
path='prop_b',
query=Q('match', prop_b__title='some title'))

我已经尝试了许多方法来升级到下一个级别(prop_bx),而我最好的镜头是这样,但是它得到“400个创建查询失败”的信息:
s2=Search().using(client).query('nested', 
path='prop_b',
query=Q('nested',path='prop_b__propbx'),
query=Q('match', prop_b__propbx__name='some name'))

在文档中找不到答案甚至线索。我可以用更详细的标准查询形式编写此代码,然后使用.from_dict()方法进行转换,但是为什么还要麻烦将其转换为elasticsearch-dsl?

线索?谢谢。

最佳答案

只需使用。而不是路径上的__:

S2=Search().using(client).query('nested', 
path='prop_b.probbx',
query=Q('match', prop_b__propbx__name='some name'))

关于elasticsearch - 使用Elasticsearch DSL的三级嵌套 bool 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54545839/

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