2017-06-21 13 views
1

問い合わせは、私が強調表示されたフィールド全体ではなく、言葉で<em>Brid</em>gitteを取得したいBridた場合は私のインデックスが(私はNGRAMアナライザを追加しました。このようになります<em>Bridgitte</em>弾性検索ではなく、単語の一部の単語全体を強調

{ 
"myindex": { 
    "aliases": {}, 
    "mappings": { 
     "mytype": { 
      "properties": { 
       "myarrayproperty": { 
        "properties": { 
         "mystringproperty1": { 
          "type": "string", 
          "term_vector": "with_positions_offsets", 
          "analyzer": "index_ngram_analyzer", 
          "search_analyzer": "search_term_analyzer" 
         }, 
         "mystringproperty2": { 
          "type": "string", 
          "term_vector": "with_positions_offsets", 
          "analyzer": "index_ngram_analyzer", 
          "search_analyzer": "search_term_analyzer" 
         } 
        }, 
        "mylongproperty": { 
         "type": "long" 
        }, 
        "mydateproperty": { 
         "type": "date", 
         "format": "strict_date_optional_time||epoch_millis" 
        }, 
        "mystringproperty3": { 
         "type": "string", 
         "term_vector": "with_positions_offsets", 
         "analyzer": "index_ngram_analyzer", 
         "search_analyzer": "search_term_analyzer" 
        }, 
        "mystringproperty4": { 
         "type": "string", 
         "term_vector": "with_positions_offsets", 
         "analyzer": "index_ngram_analyzer", 
         "search_analyzer": "search_term_analyzer" 
        } 
       } 
      } 
     }, 
     "settings": { 
      "index": { 
       "creation_date": "1498030893611", 
       "analysis": { 
        "analyzer": { 
         "search_term_analyzer": { 
          "filter": "lowercase", 
          "type": "custom", 
          "tokenizer": "ngram_tokenizer" 
         }, 
         "index_ngram_analyzer": { 
          "filter": ["lowercase"], 
          "type": "custom", 
          "tokenizer": "ngram_tokenizer" 
         } 
        }, 
        "tokenizer": { 
         "ngram_tokenizer": { 
          "token_chars": ["letter", "digit"], 
          "min_gram": "1", 
          "type": "nGram", 
          "max_gram": "15" 
         } 
        } 
       }, 
       "number_of_shards": "5", 
       "number_of_replicas": "1", 
       "uuid": "e5kBX-XRTKOqeAScO1Fs0w", 
       "version": { 
        "created": "2040499" 
       } 
      } 
     }, 
     "warmers": {} 
    } 
} 

}

)ここHighlighting part of word in elasticsearch示唆されたように、これは、それが関連するかどうかわからない、Elasticsearchインスタンスを埋め込まれています。

私のクエリは、この

MatchQueryBuilder queryBuilder = matchPhrasePrefixQuery("_all", query).maxExpansions(50); 
final SearchResponse response = client.prepareSearch("myindex") 
    .setQuery(queryBuilder) 
    .addHighlightedField("mystringproperty3", 0, 0) 
    .addHighlightedField("mystringproperty4", 0, 0) 
    .addHighlightedField("myarrayproperty.mystringproperty1", 0, 0) 
    .setHighlighterRequireFieldMatch(false) 
    .execute().actionGet(); 

のように見え、それは動作しません。私はqueryStringQueryにクエリを変更しようとしましたが、それは単語の一部で検索をサポートしていないようです。助言がありますか?

答えて

1

これはできません。弾性検索は単語の索引付けを行います。トークン化の観点からは、ここではあまりできません。

検索結果にラッパーを記述する必要がある場合があります。 (弾力的な検索ではない)

関連する問題