Python クライアントで Elasticsearch を使用していますが、Unicode、ES、アナライザー、および絵文字の間の相互作用について質問があります。絵文字を含む Unicode テキスト文字列を ES アナライザーで実行しようとすると、結果の出力で用語オフセットが台無しになっているようです。
例えば:
>> es.indices.analyze(body=u'\U0001f64f testing')
{u'tokens': [{u'end_offset': 10,
u'position': 1,
u'start_offset': 3,
u'token': u'testing',
u'type': u'<ALPHANUM>'}]}
これにより、テストという用語のオフセットが間違っています。
>> u'\U0001f64f testing'[3:10]
u'esting'
別の Unicode 外部文字 (円記号など) を使用しても、同じエラーは発生しません。
>> es.indices.analyze(body=u'\u00A5 testing')
{u'tokens': [{u'end_offset': 9,
u'position': 1,
u'start_offset': 2,
u'token': u'testing',
u'type': u'<ALPHANUM>'}]}
>> u'\u00A5 testing'[2:9]
u'testing'
誰が何が起こっているのか説明できますか?