我正在使用 elasticsearch-dsl-py 0.0.5 和https://github.com/HonzaKral/es-django-example上的示例用于 Django。
我有一个 DocType:
class PageDoc(DocType):
title = String(analyzer='snowball')
index = Index('my_index')
index.doc_type(PageDoc)
我使用下面的管理命令更新我的索引。Page
是我要索引的 Django 模型。
class Command(BaseCommand):
def handle(self, *args, **kwargs):
self.es = connections.get_connection()
index.delete(ignore=404)
index.create()
self.verbose_run(Page)
def verbose_run(self, model, report_every=100):
name = model._meta.verbose_name
print('Indexing %s: ' % name, end='')
start = time.time()
cnt = 0
for _ in streaming_bulk(
self.es,
(m.to_search().to_dict(True) for m in model.objects.all().iterator()),
index=settings.ES_INDEX,
doc_type=name.lower()):
cnt += 1
if cnt % report_every:
print('.', end='')
print('DONE\nIndexing %d %s in %.2f seconds' % (
cnt, name, time.time() - start
))
http://127.0.0.1:9200/my_index/_mapping?pretty的(简化)输出是:
{
"my_index" : {
"mappings" : {
"page" : {
"properties" : {
"title" : {
"type" : "string"
}
}
}
}
}
}
我可以查询完全匹配,但词干提取不起作用。为什么雪球分析器没有添加到标题字段?