首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在elasticsearch中搜索字段

在elasticsearch中搜索字段
EN

Stack Overflow用户
提问于 2018-06-10 18:50:48
回答 1查看 45关注 0票数 1

我有一个类似下面的JSON文档

代码语言:javascript
复制
{"type":"line","line_id":89522,"play_name":"Taming of the Shrew","speech_number":19,"line_number":"2.1.58","speaker":"PETRUCHIO","text_entry":"To instruct her fully in those sciences,"}
{"index":{"_index":"shakespeare","_id":89522}}
{"type":"line","line_id":89523,"play_name":"Taming of the Shrew","speech_number":19,"line_number":"2.1.59","speaker":"PETRUCHIO","text_entry":"Whereof I know she is not ignorant:"}
{"index":{"_index":"shakespeare","_id":89523}}
{"type":"line","line_id":89524,"play_name":"Taming Day","speech_number":19,"line_number":"2.1.60","speaker":"PETRUCHIO","text_entry":"Accept of him, or else you do me wrong:"}
{"index":{"_index":"shakespeare","_id":89524}}

我正在尝试在驯服上做一个搜索,只要play_name包含“驯服”,它就会返回。

我的查询是这样的

代码语言:javascript
复制
GET /shakespeare/doc/_search
{
  "query":{
    "match":{"play_name":"Taming"}
  }

}

问题是,它不会返回play_name包含HOwever的所有结果。我看了文档,看起来这应该行得通。因此,有没有人可以告诉mw我做错了什么?

PS :这是我的地图设置

代码语言:javascript
复制
{
  "shakespeare": {
    "mappings": {
      "doc": {
        "properties": {
          "line_id": {
            "type": "integer"
          },
          "line_number": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "play_name": {
            "type": "keyword"
          },
          "speaker": {
            "type": "keyword"
          },
          "speech_number": {
            "type": "integer"
          },
          "text_entry": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "type": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-11 08:33:55

您应该将play_name字段的映射更改为"type": "text"。如果您计划搜索精确匹配,则仍然可以包括关键字映射。

play_name的最终映射应如下所示:

代码语言:javascript
复制
      "play_name": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50782918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档