2016-06-22 15 views
0

最近、ElasticPress for WooCommerceが統合され、(フィルタを使用して)コードの改良が加えられましたが、ElasticSearch APIの制限と思われるいくつかのヒットがありました。注文を検索するときに弾性検索エンジンに送信されたクエリに改造を加え、検索用語が部分検索として機能するようにしました(SQLのLIKEステートメントと同じように)。AWSのElasticSearchワイルドカードクエリとスペースに関する問題

スペースや@記号のような特殊な記号がクエリにある場合を除いて、正常に動作します。私はこれが特殊文字をエスケープすることによって避けることができることを読んだが、私はそれもやって運がなかった。

私はワイルドカードクエリを使用していますが、私はエスケープされたバージョンでreplacnigスペースを試しましたか?トークン(任意の1文字と一致する必要があります)。そしてそれにも運がない。

このクエリは動作します。これにはない

"query": { 
    "wildcard": { 
     "meta._billing_full_name.value": "*kumar*" 
    } 
} 

"query": { 
    "wildcard": { 
     "meta._billing_full_name.value": "*manish*" 
    } 
} 

は、これはあまりにも行います。

"query": { 
    "wildcard": { 
     "meta._billing_full_name.value": "*manish k*" 
    } 
} 

ところで、私たちはAとしてAWS ElasticSearchサービスを使用していますサービスプロバイダ。彼らはElasticSearchの古いバージョン(私が知る限り1.5.3)を使用していますが、それが問題の原因の1つであるかどうかはわかりません。

おかげ

+0

'meta._billing_full_name.value'のマッピングは何ですか?それは '分析された文字列'ですか? – Richa

+0

@リチャ私はよく分かりません。私はプラグインをインストールし、ElasticPressを使用してサイトを索引付けしました。私はそれが特別なものを生成しないと思う。どのようにその小道具のマッピングがチェックされるべきですか? –

+0

'curl -XGET 'を使用しますhttp:// serverIp:9200/index_name/_mapping /' ' – Richa

答えて

1

あなたによって示すマッピングによるvaluemultifieldのようです。つまり、analyzednot_analyzedという文字列の両方でインデックスされています。

クエリ、次のそれのnot_analyzedバージョン、使用する場合:

"query": { 
"wildcard": { 
    "meta._billing_full_name.value.raw": "*manish k*" 
    } 
} 

今では動作するはずです。

+0

ありがとう@リチャこれは私が使用した実際の実装ではありませんでしたが、それは私が正しい方向に得るのを助けました。私は小文字で検索したいので、 'raw 'の代わりに' sortable'フィールドを使いました。あなたの助けを借りて私の研究によれば、そのような解析された文字列は、not_analyzedのように機能します。 –

+0

お待ちしています.. – Richa

関連する問題