从ElasticSearch文档中检索分析的标记

Cla*_*ell 34 text tokenize elasticsearch

尝试访问我的ElasticSearch文档中的分析/标记化文本.

我知道您可以使用Analyze API根据分析模块分析任意文本.因此,我可以将文档中的数据复制并粘贴到Analyze API中,以查看它是如何标记化的.

但这似乎不必要地耗费时间.有没有办法指示ElasticSearch在搜索结果中返回标记化文本?我查看了文档但没有找到任何内容.

Tor*_*cht 16

这个问题很老了,但也许我认为还需要一个额外的答案.

使用ElasticSearch 1.0.0,添加了Term Vector API,使您可以在每个文档的基础上直接访问令牌ElasticSearch商店.API文档对此并不十分清楚(仅在示例中提到),但是为了使用API​​,您必须首先在映射定义中指出要term_vector在每个字段上存储具有属性的术语向量.


jav*_*nna 15

看看这个其他答案:elasticsearch - 返回字段的标记.不幸的是,它需要使用提供的脚本动态重新分析您的字段的内容.
应该可以编写一个插件来公开这个功能.想法是添加两个端点:

  • 允许读取像solr TermsComponent那样的lucene TermsEnum ,对于自动建议也很有用.请注意,它不是每个文档,只是索引上的每个术语都有术语频率和文档频率(可能很多,有很多独特的术语)
  • 如果启用,则允许读取术语向量,如solr TermVectorComponent所做的那样.这将是每个文档,但需要存储术语向量(您可以在映射中配置它),并允许在启用时检索位置和偏移.


小智 6

您可能希望使用脚本,但是您的服务器应该启用脚本.

curl 'http://localhost:9200/your_index/your_type/_search?pretty=true' -d '{
    "query" : {
        "match_all" : { }
    },
    "script_fields": {
        "terms" : {
            "script": "doc[field].values",
            "params": {
                "field": "field_x.field_y"
            }
        }
    }
}'
Run Code Online (Sandbox Code Playgroud)

允许脚本的默认设置取决于弹性搜索版本,因此请从官方文档中查看.