Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多字段弹性搜索_Javascript_Node.js_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Javascript,Node.js,elasticsearch" /> elasticsearch,Javascript,Node.js,elasticsearch" />

Javascript 多字段弹性搜索

Javascript 多字段弹性搜索,javascript,node.js,elasticsearch,Javascript,Node.js,elasticsearch,我如何为elasticsearch创建这样的body select * from table where full_name like '%q%' or address like '%q%' or description like '%q%' order by full_name , description , address 你可以试试下面的。 ` `您可以尝试以下方法。 ` `通配符查询可能非常昂贵,尤其是在多个字段中搜索时。正确的方法是在只想搜索其中一部分的字段上使用 首先,使用自定义分

我如何为elasticsearch创建这样的body

select * from table where full_name like '%q%' or address like '%q%' or description like '%q%' order by full_name , description , address

你可以试试下面的。 `


`您可以尝试以下方法。 `


`

通配符查询可能非常昂贵,尤其是在多个字段中搜索时。正确的方法是在只想搜索其中一部分的字段上使用

首先,使用自定义分析器创建一个如下所示的索引,该分析器将字段分割成可搜索的标记:

curl -XPUT localhost:9200/tests -d '{
  "settings": {
    "analysis": {
      "analyzer": {
        "substring_analyzer": {
          "tokenizer": "standard",
          "filter": ["lowercase", "substring"]
        }
      },
      "filter": {
        "substring": {
          "type": "nGram",
          "min_gram": 1,
          "max_gram": 15
        }
      }
    }
  },
  "mappings": {
    "test": {
      "properties": {
        "full_name": {
          "type": "string",
          "analyzer": "substring_analyzer"
        },
        "address": {
          "type": "string",
          "analyzer": "substring_analyzer"
        },
        "description": {
          "type": "string",
          "analyzer": "substring_analyzer"
        }
      }
    }
  }
}'
然后,您可以索引一些文档:

curl -XPUT localhost:9200/tests/test/_bulk -d '
{"index":{"_id": 1}}
{"full_name": "Doe", "address": "1234 Quinn Street", "description": "Lovely guy"}
{"index":{"_id": 2}}
{"full_name": "Brennan", "address": "4567 Main Street", "description": "Not qualified"}
{"index":{"_id": 3}}
{"full_name": "Quantic", "address": "1234 Quinn Street", "description": "New friend"}
'
最后,您可以使用与上述SQL查询等效的查询进行搜索,并且所有三个测试文档都将匹配:

curl -XPUT localhost:9200/tests/test/_search -d '{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "full_name": "q"
          }
        },
        {
          "match": {
            "address": "q"
          }
        },
        {
          "match": {
            "description": "q"
          }
        }
      ]
    }
  }
}'

通配符查询可能非常昂贵,尤其是在多个字段中搜索时。正确的方法是在只想搜索其中一部分的字段上使用

首先,使用自定义分析器创建一个如下所示的索引,该分析器将字段分割成可搜索的标记:

curl -XPUT localhost:9200/tests -d '{
  "settings": {
    "analysis": {
      "analyzer": {
        "substring_analyzer": {
          "tokenizer": "standard",
          "filter": ["lowercase", "substring"]
        }
      },
      "filter": {
        "substring": {
          "type": "nGram",
          "min_gram": 1,
          "max_gram": 15
        }
      }
    }
  },
  "mappings": {
    "test": {
      "properties": {
        "full_name": {
          "type": "string",
          "analyzer": "substring_analyzer"
        },
        "address": {
          "type": "string",
          "analyzer": "substring_analyzer"
        },
        "description": {
          "type": "string",
          "analyzer": "substring_analyzer"
        }
      }
    }
  }
}'
然后,您可以索引一些文档:

curl -XPUT localhost:9200/tests/test/_bulk -d '
{"index":{"_id": 1}}
{"full_name": "Doe", "address": "1234 Quinn Street", "description": "Lovely guy"}
{"index":{"_id": 2}}
{"full_name": "Brennan", "address": "4567 Main Street", "description": "Not qualified"}
{"index":{"_id": 3}}
{"full_name": "Quantic", "address": "1234 Quinn Street", "description": "New friend"}
'
最后,您可以使用与上述SQL查询等效的查询进行搜索,并且所有三个测试文档都将匹配:

curl -XPUT localhost:9200/tests/test/_search -d '{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "full_name": "q"
          }
        },
        {
          "match": {
            "address": "q"
          }
        },
        {
          "match": {
            "description": "q"
          }
        }
      ]
    }
  }
}'

你试过自己写东西吗?是的,但是在多重匹配中只有短语前缀,但我需要一些类似通配符的东西。我认为你应该多读一些关于全文搜索的内容。最好在你的问题中添加你已经尝试过的内容以及为什么它不起作用(以防你知道).我只知道analyzer之类的东西,但很难理解,现在我已经知道前缀了,所以我想可能有办法同时获得前缀(pre和post)你试过自己写东西吗?是的,但是在多重匹配中,只有短语前缀,但我需要一些类似通配符的东西。我认为你应该多读一些关于全文搜索的内容。最好在你的问题中添加你已经尝试过的内容以及为什么它不起作用(以防你知道).我只知道analyzer之类的东西,但很难理解,现在我已经知道前缀了,所以我想可能有办法同时获得前缀和后缀