首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elasticsearch-dsl-py按Text()字段排序

elasticsearch-dsl-py按Text()字段排序
EN

Stack Overflow用户
提问于 2017-07-20 16:27:15
回答 1查看 3.6K关注 0票数 1

我对.sort()方法有问题。例如,我有带有Text()字段的Index:

代码语言:javascript
复制
FILTER = token_filter(
    'FILTER', 'edge_ngram', min_gram=3, max_gram=40)
ANALYZER = analyzer(
    'ANALYZER', tokenizer='standard', type='custom', filter=[
        'standard', 'lowercase', 'stop', 'asciifolding',FILTER])

class Article(DocType):
    title = Text(analyzer=ANALYZER)
    body = Text(analyzer='snowball')
    tags = Keyword()

search = Article.search().sort('title')
search.execute()

当我尝试使用排序执行搜索查询时,我会得到一个错误:

elasticsearch.exceptions.RequestError: TransportError(400,“search”,“默认情况下在文本字段上禁用fielddata。在标题上设置fielddata=true,以便通过取消倒排索引在内存中加载字段数据。注意,这可以使用重要内存。”)

在这种情况下,如何正确地按title字段进行排序而不设置fieldata=true

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-20 19:29:30

不能对text字段进行排序,这是elasticsearch中的一个限制。它需要是一个类型的keyword

不幸的是,类型keyword不能有分析器,但是它可以有一个执行类似(尽管有点有限)功能的normalizer。本质上,区别在于您不能指定一个令牌程序,因为那样的话,任何排序都不会有多大意义(当您有多个排序时,您将使用哪个令牌进行排序?)

希望这能帮上忙

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45220352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档