我刚接触Elasticsearch和python的elasticsearch-dsl,我真的不明白为什么我的过滤器不返回任何结果:
In [1]: from elasticsearch import Elasticsearch
...: from elasticsearch_dsl import Search
...:
...: search = Search(using=Elasticsearch())
In [2]: search.execute()
Out[2]: <Response: [<Hit(general-index/1): {'first_name': 'Piero', 'full_name': 'Piero Pierone'}>]>
In [3]: search.filter('term', first_name='Piero').count()
Out[3]: 0我的索引只包含一个带有first_name == 'Piero'的条目,所以我希望返回的结果是计数等于1,而我得到的是0。
发布于 2019-11-22 18:13:07
试试这个,它应该是有效的:
search.filter('term', first_name='piero').count()term query将所有字符都小写,对于匹配精确的查询并不是很有用。请参阅链接上的警告部分,以使用匹配查询,如下所示:
search.filter('match', first_name='Piero').count()这里有不同查询和查询类型的所有结果:
In [19]: search.filter('term', first_name='Piero').count()
Out[19]: 0
In [20]: search.filter('term', first_name='piero').count()
Out[20]: 1
In [21]: search.filter('match', first_name='Piero').count()
Out[21]: 1
In [22]: search.filter('match', first_name='piero').count()
Out[22]: 1https://stackoverflow.com/questions/58991159
复制相似问题