Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Elasticsearch: field "title" was indexed without position data; cannot run PhraseQuery

I have an index in ElasticSearch with the following mapping:

mappings: {
    feed: {
        properties: {
            html_url: {
               index: not_analyzed
               omit_norms: true
               index_options: docs
               type: string
            }
            title: {
                index_options: offsets
                type: string
            }
            created: {
                store: true
                format: yyyy-MM-dd HH:mm:ss
                type: date
            }
            description: {
                type: string
            }
       }
}

getting the following error when performing phrase search ("video games"):

IllegalStateException[field \"title\" was indexed without position data; cannot run PhraseQuery (term=video)];

Single word searches work fine. Tried "index_options: positions" as well but with no luck. Title field contains text in multiple languages, sometimes empty. Interesting that it seems to fail randomly, for example it would fail with 200K documents or 800K using the same dataset. Is there a reason some titles wouldn't get indexed with positions?

Elastic search version 0.90.5

like image 454
flext Avatar asked Oct 10 '13 17:10

flext


1 Answers

Just in case someone else has the same issue. There was another type/table (feed2) in the same index with the same "title" field that was set to "not_analyzed".

For some reason even if you specify the type: http://elasticsearchhost.com:9200/index_name/feed/_search the other type is still being searched as well. Changing the mapping for feed2 type fixed the problem.

like image 108
flext Avatar answered Nov 05 '22 21:11

flext