Elasticsearch-pyElasticsearch.search
でメソッドを使用する
検索 1: 検索fields
でオプションを使用しない場合:
search_body = {
"filter" :
{
"term" :
{
"user.id" : 19900726
}
},
"size" : 1
}
結果は次のとおりです。
{u'_shards': {u'failed': 0, u'successful': 5, u'total': 5},
u'hits': {u'hits': [{u'_id': u'657184533922451456',
u'_index': u'tweets-index-2016-9',
u'_score': 1.0,
u'_source': {u'created_at': u'2015-10-22T13:19:37',
u'entities': {u'hashtags': [{u'indices': [5, 13], u'text': u'IndvsSA'}],
u'symbols': [],
u'urls': [],
u'user_mentions': []},
u'favorite_count': 0,
u'favorited': False,
u'id': 657184533922451456,
u'id_str': u'657184533922451456',
u'is_quote_status': False,
u'lang': u'und',
u'outdated': u'No',
u'retweet_count': 0,
u'retweeted': False,
u'saved_at': u'2016-03-03T15:02:06.157149',
u'source': u'<a href="http://twitter.com/download/android" rel="nofollow">Twitter for Android</a>',
u'text': u'Out. #IndvsSA',
u'truncated': False,
u'user': {u'id': 19900726, u'id_str': u'19900726'}},
u'_type': u'tweet'}],
u'max_score': 1.0,
u'total': 2981},
u'timed_out': False,
u'took': 10}
検索 2:fields
オプションを指定して検索:
search_body = {
"filter" :
{
"term" :
{
"user.id" : 19900726
}
},
"fields" :
[
'id',
'created_at',
'retweet_count',
'favorite_count'
],
"size" : 1
}
結果は次のようになります。
{u'_shards': {u'failed': 0, u'successful': 5, u'total': 5},
u'hits': {u'hits': [{u'_id': u'657184533922451456',
u'_index': u'tweets-index-2016-9',
u'_score': 1.0,
u'_type': u'tweet',
u'fields': {u'created_at': [u'2015-10-22T13:19:37'],
u'favorite_count': [0],
u'id': [657184533922451456],
u'retweet_count': [0]}}],
u'max_score': 1.0,
u'total': 2981},
u'timed_out': False,
u'took': 6}
list
ここで 2 番目の検索では、検索 1 ですべてのフィールドが as として返されるのはなぜですかlong
(string
インデックス作成中に使用される型)が返されます。検索 2の動作を修正するにはどうすればよいですか?