繁体   English   中英

如何在elasticsearch-dsl python中选择特定字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM