弹性搜索:从特定位置匹配字段

时间:2018-12-26 02:26:10

标签: elasticsearch

  

“ question_tag:弹性搜索
question_content:这是我关于stackoverflow弹性搜索的第一个问题”

以上是存储在弹性搜索中的示例字段

我想知道在“ question_content”之后是否存在短语“弹性搜索”。有办法吗?

例如上述,答案应为

例如

  

“ question_tag:弹性搜索
question_content:这是我关于stackoverflow上Java的第一个问题”

答案应为

1 个答案:

答案 0 :(得分:0)

我建议创建两个不同的字段question_tagquestion_content,而不是通过将所有内容存储在单个文件中来使事情变得复杂。

因此您的映射应如下所示:

PUT myindex
{
  "mappings": {
    "_doc": {
      "properties": {
        "question_tag": {
          "type": "keyword"
        },
        "question_content": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword"
            }
          }
        }
      }
    }
  }
}

您可以索引您的文档。例如:

PUT myindex/_doc/1
{
  "question_tag": "elastic search",
  "question_content": "This is my first question about elastic search on stackoverflow"
}

PUT myindex/_doc/1
{
  "question_tag": "elastic search",
  "question_content": "This is my first question about Java on stackoverflow"
}

然后,您可以使用match_phrase查询来获取具有特定短语的文档。

GET myindex/_search
{
   "query": {
      "match_phrase" : {
         "question_content" : "elastic search"
      }
   }
}

有关match phrase的更多信息。