2016-05-26 9 views
0

私の格納されたデータに空白()がアンダースコア(_)で置換されていることがあります(必ずしもそうではありません)ので、My Elasticsearchクエリが正しく機能しません。ユーザーがスペースで検索すると、結果にアンダースコアのエントリが表示されません。弾性検索クエリと文字置換

たとえば、ユーザーが文字列annoying problemを検索した場合、annoying_problemはインデックスに格納されている文字列なので何も表示されません。

他の文字にも同様の問題があります。たとえば、Øは、インデックス作成に使用されるデータでoに置き換えられます。

どうすれば解決できますか?

+0

を使用してみては?それは目的ですか?デフォルトのアナライザは使用していますか?このAPIを使用すると、GET/_analyze?analyzer = standard&text = annoying_problemとGET/_analyze?analyzer = standard&text =厄介な問題がどのように生成されるかを確認できます。アンダースコアを削除する際にカスタムアナライザを作成する必要があると思います。これは独自の文字フィルタを設定することで可能です - 詳細はこちら:https://www.elastic.co/guide/en/elasticsearch/guide/current/ analysis-intro.html –

+0

@Adam:ありがとう、私はこれを調べます。インデックスを作成するために使用するデータは、さまざまな第三者ソースからのものです。残念なことに、これらの第三者は、恣意的かつ荒々しく異なるキャラクターを置き換えてはいますが、それは当てはまります。 – Gruber

+0

@Gruberあなたのデータが分析されるなら、私は一つの提案をします。スペースと '_'の両方でデータをトークン化するアナライザを試してください –

答えて

1

はストップワード

{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "my_analyzer": { 
      "type": "standard", 
      "stopwords": [ "_"] 
     } 
     } 
    } 
    } 
} 

refrence時々あなたの格納されたデータは、スペースを持ち、時にはアンダーなぜhttps://www.elastic.co/guide/en/elasticsearch/guide/current/using-stopwords.html

+0

これを実行すると(コードの上に 'PUT my_index_name'を追加すると)、' index_already_exists_exception'が得られます。既存のインデックスでこれをどのように実行できますか? – Gruber

+0

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html –