对嵌套对象使用 Python elastisearch_dsl
Using Python elastisearch_dsl with nested objects
我想尝试将 elasticsearch_dsl 与 python 一起用于以下
import elasticsearch
es_server = 'my_server_name'
es_port = '9200'
es_index_name = 'my_index_name'
es_connection = Elasticsearch([{'host': es_server, 'port': es_port}])
es_query = '{"query":{"bool":{"must":[{"term":{"data.party.fullName":"john do"}}],"must_not":[],"should":[]}},"from":0,"size":1,"sort":[],"facets":{}}'
my_results = es_connection.search(index=es_index_name, body=es_query)
print my_results
es_query ='{"query": {"nested" : {"filter" : {"term" : {"party.phoneList.phoneFullNumber" : "4081234567"}},"path" : "party.phoneList"}},"from" :0,"size" : 1}';
my_results = es_connection.search(index=es_index_name, body=es_query)
print my_results
我能够得到第一个查询,但不确定第二个查询
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q
client = Elasticsearch('my_server:9200')
s = Search(using=client, index = "my_index").query("term",fullName="john do ")
response = s.execute()
print response
不确定如何使用 DSL 对嵌套对象进行查询 party.phoneList.phoneFullNumber
ES 新手,因此不知道如何做嵌套对象。
我看了看https://github.com/elastic/elasticsearch-dsl-py/issues/28,不太明白。
谢谢!
只需使用 __
而不是 .
来绕过 python 的限制和 nested
查询:
s = Search(using=client, index = "my_index")
s = s.query("nested",
path="party.phoneList",
query=Q("term", party__phoneList__phoneFullNumber="4081234567")
)
我想尝试将 elasticsearch_dsl 与 python 一起用于以下
import elasticsearch
es_server = 'my_server_name'
es_port = '9200'
es_index_name = 'my_index_name'
es_connection = Elasticsearch([{'host': es_server, 'port': es_port}])
es_query = '{"query":{"bool":{"must":[{"term":{"data.party.fullName":"john do"}}],"must_not":[],"should":[]}},"from":0,"size":1,"sort":[],"facets":{}}'
my_results = es_connection.search(index=es_index_name, body=es_query)
print my_results
es_query ='{"query": {"nested" : {"filter" : {"term" : {"party.phoneList.phoneFullNumber" : "4081234567"}},"path" : "party.phoneList"}},"from" :0,"size" : 1}';
my_results = es_connection.search(index=es_index_name, body=es_query)
print my_results
我能够得到第一个查询,但不确定第二个查询
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q
client = Elasticsearch('my_server:9200')
s = Search(using=client, index = "my_index").query("term",fullName="john do ")
response = s.execute()
print response
不确定如何使用 DSL 对嵌套对象进行查询 party.phoneList.phoneFullNumber
ES 新手,因此不知道如何做嵌套对象。 我看了看https://github.com/elastic/elasticsearch-dsl-py/issues/28,不太明白。
谢谢!
只需使用 __
而不是 .
来绕过 python 的限制和 nested
查询:
s = Search(using=client, index = "my_index")
s = s.query("nested",
path="party.phoneList",
query=Q("term", party__phoneList__phoneFullNumber="4081234567")
)