[英]How to select specific fields in elasticsearch-dsl python
我使用elasticsearch dsl搜索elasticsearch: https : //elasticsearch-dsl.readthedocs.org/en/latest/
如何在进行搜索查询时过滤特定字段:
我知道它在elasticsearch中得到了支持: https : //www.elastic.co/guide/en/elasticsearch/reference/1.4/search-request-fields.html
只是不知道如何在Elasticsearch-dsl中做同样的事情
当您拥有Search
对象时,可以在其上调用.fields()
函数并指定要返回的字段:
s = search.Search()
s = s.fields(["field1", "field2"])
...
它没有明确的文件中提到,但你可以看到fields
中的函数来源为search.py
文件和一些测试用例的fields
功能
UPDATE
从ES 2.x开始, fields()
方法已重命名为source()
在elasticsearch-dsl版本中,不推荐使用6.xx fields()
,结果有异常。
使用source(fields=None, **kwargs)
来projection
列
例如
s = Search()
s = s.source(["field1", "field2"])
s = Search()
s = s.source(include=['obj1.*'], exclude=["*.description"])
s = Search()
s = s.source(include=['obj1.*']).source(exclude=["*.description"])
我在所有领域使用它:
from elasticsearch_dsl import Q, Search
from elasticsearch import Elasticsearch
client = Elasticsearch('localhost:9200')
q = Q("multi_match", query='STRING_TO_SEARCH', fields=['_all'])
result = Search(index='YOUR_INDEX').using(client).query(q).execute()
或特定领域:
fields=['name',]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.