“ query_string”在Elasticsearch中如何工作?

时间:2019-12-11 11:18:45

标签: elasticsearch

我在ES 5中具有以下映射的索引

{
  "test-log": {
    "mappings": {
      "record": {
        "properties": {
          "content": {
            "type": "text"
          },
          "level": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

我为这样的文件建立索引

POST test-log/record
{
  "content":"this is about java and mysql",
  "level":"info"
}

使用以下DSL我可以获取数据

GET test-log/_search
{
  "query": {
    "query_string": {
      "query": "info error"
    }
  }
}

然后我将ES升级到7.4

{
  "test-log" : {
    "mappings" : {
      "properties" : {
        "content" : {
          "type" : "text"
        },
        "level" : {
          "type" : "keyword"
        }
      }
    }
  }
}

但是我得到的结果是空的。

那么query_string在ES 7中如何工作?

ES 5和7之间有什么区别?

2 个答案:

答案 0 :(得分:1)

根据the documentation,您可能需要"query": "info OR error"

答案 1 :(得分:0)

ES 6发生了重大变化。

https://www.elastic.co/guide/en/elasticsearch/reference/6.8/breaking-changes-6.0.html#_the_literal__all_literal_meta_field_is_now_disabled_by_default

在ES 5中,$ ./bin/three2d <dat/3x3.txt 445 971 809 962 208 648 547 459 981 634 656 529 534 710 10 796 548 696 998 647 215 857 384 698 54 Enter the kernel: 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 27643 33359 22960 0 0 26218 33460 27418 0 0 25653 31352 20828 0 0 0 0 0 0 默认为default_field,而_all是一个特殊的通用字段,它将所有其他字段的值连接到一个大字符串中。

在ES 7中,_all的默认值为default_field*值提取所有符合条件查询条件的字段,并过滤元数据字段。如果未指定前缀,则将所有提取的字段合并以构建查询。这些字段被合并,但已串联