3

当我尝试搜索存储状态首字母缩写词的字段时,我遇到了问题。

我有下一个查询:

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

当我尝试获取俄勒冈州 (OR) 的结果时,问题就来了。对于所有其他状态都有效,但是对于这个特定状态,就像 Elasticsearch 将“OR”作为检索所有状态的条件。

有没有办法使这项工作????,我已经尝试过使用术语、前缀过滤器以及所有相同的结果。

4

1 回答 1

0

听起来您想将默认分析器从标准分析器中更改出来(它会做很多事情,包括过滤掉像“或”这样的英语停用词)。这是一个使用简单分析器的示例(仅小写):

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"
      }
    }
  }
}'

请注意,如果您使用的是简单分析器,您可能需要搜索“或”而不是“或”:

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