3

州の頭字語を格納するフィールドを検索しようとすると、問題が発生します。

次のクエリがあります。

{
    "query": {
         "query_string": {
               "query": "field_state:'OR' AND type:incentive"
                 }
              }
} 

問題は、オレゴン州 (OR) の結果を取得しようとしたときに発生します。他のすべての状態では機能しますが、この特定の状態では、Elasticsearch が条件として「OR」を取り、すべてを取得するようなものです。

これを機能させる方法はありますか????、用語、プレフィックスフィルター、およびすべて同じ結果で試しました。

4

1 に答える 1

0

デフォルトのアナライザーを標準アナライザーから変更したいようです(これは、「または」などの英語のストップワードを除外するなど、さまざまなことを行います)。Simple Analyzer (小文字のみ)を使用した例を次に示します。

curl -XPOST "http://MYHOST/MYINDEX/_close"
curl -XPUT "http://MYHOST/MYINDEX/_settings" -d '{
  "analysis": {
    "analyzer": {
      "default": {
        "type": "simple"
      }
    }
  }
}'
curl -XPOST "http://MYHOST/MYINDEX/_open"

ただし、 のアナライザーのみfield_stateを変更する場合は、そのフィールドのマッピングを直接更新できます。

curl -XPUT "http://MYHOST/MYINDEX/MYTYPE/_mapping" -d '{
  "MYTYPE": {
    "properties": {
      "field_state": {
        "analyzer": "simple",
        "type": "string"
      }
    }
  }
}'

単純なアナライザーを使用している場合は、「OR」ではなく「または」を検索する必要がある場合があることに注意してください。

curl -XPOST "http://MYHOST/MYINDEX/MYTYPE/_search" -d '{
  "query": {
    "query_string": {
      "query": "field_state:'or' AND type:incentive"
    }
  }
}'
于 2013-08-15T02:17:27.610 に答える