弹性搜索搜索不区分大小写的连字符 whitecaps

elastic search searching case insensitive hyphens whitecaps

我想搜索一个或多个由连字符、白帽组成且不区分大小写的词。

索引结构如下:

body' => array(
  'settings' => array(
    "analysis" => array(
      "analyzer" => array(
        "default" => array(
          "type" => "custom",
          'tokenizer' => "whitespace",
          "filter" => array("lowercase")
        ),
        "autoCompleteSearch" => array(
          "tokenizer" => "standard",
          "filter" => array("lowercase", "trim", "standard")
       )
    )
  )
),
'mappings' => array(
  "myindex" => array(
    'properties' => array(
      'Id' => array(
        'type'  => 'integer',
        'index' => 'not_analyzed'
      ),
      'Title' => array(
        'type'  => 'string',
        'fields'=> array(
          raw' => array(
            'type'  => 'string',
            "search_analyzer" => "autoCompleteSearch",
            'index' => 'not_analyzed'
          )
        )
      ),
      'Content' => array(
        'type'  => 'string',
        'fields'=> array(
          raw' => array(
            'type'  => 'string',
            "search_analyzer" => "autoCompleteSearch",
            'index' => 'not_analyzed'
          )
        )
      )
    )
  )
)

这里是查询:

"query" : {
  "query_string": {
    "query": "*t-shir red*",
    "lowercase_expanded_terms": false,
    "fields": [
       "Title.raw",
       "Content.raw"
     ]
   }
 }

我想在 ex 的搜索字段中找到 T 恤 RED。 "t-shirt red".

非常感谢您!

与自定义原始小写子字段类似:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_keyword_lowercase_analyzer": {
          "type": "custom",
          "tokenizer": "keyword",
          "filter": [
            "lowercase"
          ]
        }
      }
    }
  }, 
  "mappings": {
    "myindex": {
      "_source": {
        "enabled": true
      },
      "properties": {
        "Title": {
          "type": "string",
          "fields": {
            "raw": {
              "type": "string",
              "index": "not_analyzed"
            },
            "raw_lowercase": {
              "type": "string",
              "analyzer": "my_keyword_lowercase_analyzer"
            }
          }
        },
        "Content": {
          "type": "string",
          "fields": {
            "raw": {
              "type": "string",
              "index": "not_analyzed"
            },
            "raw_lowercase": {
              "type": "string",
              "analyzer": "my_keyword_lowercase_analyzer"
            }
          }
        },
        "Image": {
          "type": "string",
          "analyzer": "standard"
        }
      }
    }
  }
}

以及查询:

{
  "query": {
    "query_string": {
      "query": "*t-shirt\ red*",
      "lowercase_expanded_terms": false, 
      "fields": [
        "Title.raw_lowercase",
        "Content.raw_lowercase"
      ]
    }
  }
}