簡體   English   中英

如何在pyES中提交查詢?

[英]How to submit a query in pyES?

我有以下Python代碼來查詢ElasticSearch索引。 無論我嘗試什么查詢,我都會得到一個空的結果集。 我似乎在這里缺少一些基本技巧。

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

確實,這很簡單。 字詞查詢的值應為小寫。 以下工作正常。

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

在這個出色的教程中,我有了這個主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM