首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pyES中提交查询?

如何在pyES中提交查询?
EN

Stack Overflow用户
提问于 2014-04-22 14:25:36
回答 1查看 457关注 0票数 0

我有下面的Python代码来查询ElasticSearch索引。无论我尝试什么查询,我都会得到一个空的结果集。我好像错过了一些基本的窍门。

代码语言:javascript
复制
import sys
import pyes
from pyes.query import TermQuery, FuzzyLikeThisFieldQuery, BoolQuery


conn = pyes.ES(('http', '?????.qbox.io', '80'))
INDEX = "postoffice"

def state_query(doc):
    return TermQuery(field="STATE_ALPHA", value=doc["state"])

def fuzzy_county_query(doc):
    return FuzzyLikeThisFieldQuery(field="COUNTY_NAME", like_text=doc["county"])

def fuzzy_name_query(doc):
    return FuzzyLikeThisFieldQuery(field="FEATURE_NAME", like_text=doc["place"])

def find_within_county(doc):
    return BoolQuery(must=[state_query(doc), fuzzy_county_query(doc)], should=fuzzy_name_query(doc))

if __name__ == "__main__":
    test = dict(place="Rockport", county="Essex", state="MA")
    q = find_within_county(test)
    print q._serialize()
    results = conn.search(query=q, indices=[INDEX])
    for result in results:
        print result
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-22 19:26:29

事实上,这很简单。术语查询的值应该是小写。下面的操作很好。

代码语言:javascript
复制
def state_query(doc):
    return TermQuery(field="STATE_ALPHA", value=doc["state"].lower())

我在这个优秀教程里就有了这个想法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23222374

复制
相关文章

相似问题

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