2

Python の Elasticsearch DSL パッケージを使用しています: http://elasticsearch-dsl.readthedocs.org/en/latest/search_dsl.html

サンプルの elasticsearch エントリは次のようになります。

{
  "_index" : "users",
  "_type" : "player",
  "_id" : "1",
  "_version" : 5,
  "found" : true,
  "_source":{"doc": {"weight": 92, "height": 184, "gender": "male", "firstname": "John", "lastname": "Smith", "age": 31, "country": "France"}}

firstname = "John*"のリストにあるその国のすべてのエントリを取得しようとしています[France, Australia]。これが私のコードです:

firstname = 'John'
s = Search(index='users').using(elasticsearch)
must = [
  {'match': {'doc.firstname': {'query': firstname + '*', 'boost': 2}}},
  {'terms': {'doc.country': [u'France', u'Australia']}}]

s = s.query(Q('bool', must=must))
response = s.execute()

空の結果を返します。何が間違っていますか? ここからの提案を使用しています: Elasticsearch match list against field

私はElasticsearchを初めて使用しますが、クエリとフィルターを使用する場所についてまだ少し混乱しています。

4

1 に答える 1