首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch-DSL筛选器出现意外结果

Elasticsearch-DSL筛选器出现意外结果
EN

Stack Overflow用户
提问于 2019-11-22 17:26:53
回答 1查看 36关注 0票数 0

我刚接触Elasticsearch和python的elasticsearch-dsl,我真的不明白为什么我的过滤器不返回任何结果:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-22 18:13:07

试试这个,它应该是有效的:

代码语言:javascript
复制
search.filter('term', first_name='piero').count()

term query将所有字符都小写,对于匹配精确的查询并不是很有用。请参阅链接上的警告部分,以使用匹配查询,如下所示:

代码语言:javascript
复制
search.filter('match', first_name='Piero').count()

这里有不同查询和查询类型的所有结果:

代码语言:javascript
复制
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]: 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58991159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档