App Search

应用搜索

搜索可以造就用户体验,也可以破坏用户体验。快速搜索出相关结果才是良好体验。Elasticsearch 是现如今最常用的一款开源搜索引擎。这里将介绍它受欢迎的原因。

使用 Elastic 体验应用搜索。了解更多

New Elastic 推出 Swiftype App Search 公测版本。试试看

您在过去 24 小时之内已经接触到了 Elastic

每个人都要寻找一些东西。从查找信用卡收据到日期、膳食、几瓶洗发水或乘车回家,Elasticsearch 为数千个应用程序和网站(例如 Wikipedia、Esri、Intuit、Yelp、Tinder 和 Dell.com)提供搜索体验。

无论是文档搜索、电子商务搜索、地理搜索还是图片搜索,都有着无穷的可能性。学习如何开始

专为速度和规模而创建的引擎

在其他系统中需要几个小时或几分钟才能运行的查询,在 Elasticsearch 中只需要几毫秒的时间。它很智能,赋予 PB 级数据高可用性和易用性,能够快速处理您一股脑扔给它的文本、数字、日期、IP 以及地理数据。

另外,从小处着手,也很容易实现增长;它能够水平扩展,同时自动管理索引和查询在集群中的分布情况。

您可以让它成为您自己的工具

Elasticsearch 使您可以完全控制您的应用程序的搜索体验。 它是您的开源搜索引擎,而不是黑匣子。

利用双手深入挖掘,以调整相关性,配置文本分析,优化查询,并根据对以下方面的实时洞见来推动结果:用户所查找的内容、搜索时间、接下来要查找的内容等。

Elasticsearch 对开发人员友好

Elasticsearch 随附简单、一致的查询语言,并使用标准的 RESTful API 和 JSON。此外,它还中意于语言客户端 — Python、Ruby、.NET、Java、Groovy 等不胜枚举 — 不仅让人感觉自然流畅,您还可以按照自己的喜好来使用 Elasticsearch,而无论编程背景是什么。

(此外,我们建立了一个全球社区,拥有超过 100,000 名成员。这确实是我们最喜爱的功能之一。)

									curl -H "Content-Type: application/json" -XGET
'http://localhost:9200/social-*/_search' -d '{
  "query": {
    "match": {
      "message": "myProduct"
    }
  },
  "aggregations": {
    "top_10_states": {
      "terms": {
        "field": "state",
        "size": 10
      }
    }
  }
}'
								
									RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
                    new HttpHost("localhost", 9200, "http")).build());

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());            
searchSourceBuilder.aggregation(AggregationBuilders.terms("top_10_states").field("state").size(10));

SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("social-*");
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest);
								
									var client = new ElasticClient();

var searchResponse = client.Search<Tweet>(s => s
    .Index("social-*")
    .Query(q => q
        .Match(m => m
            .Field(f => f.Message)
            .Query("myProduct")
        )
    )
    .Aggregations(a => a
        .Terms("top_10_states", t => t
            .Field(f => f.State)
            .Size(10)
        )
    )
);
								
									from elasticsearch import Elasticsearch

esclient = Elasticsearch(['localhost:9200'])
response = esclient.search(
index='social-*',
body={
    "query": {
        "match": {
            "message": "myProduct"
        }
    },
    "aggs": {
        "top_10_states": {
            "terms": {
                "field": "state",
                "size": 10
            }
        }
    }
}
)
								
									var elasticsearch = require('elasticsearch');
var esclient = new elasticsearch.Client({
  host: 'localhost:9200'
});
esclient.search({
  index: 'social-*',
  body: {
    query: {
      match: { message: 'myProduct' }
    },
    aggs: {
      top_10_states: {
        terms: {
            field: 'state',
            size: 10
        }
      }
    }
  }
}
).then(function (response) {
    var hits = response.hits.hits;
}
);
								
									$esclient = Elasticsearch\ClientBuilder::create()
              ->setHosts(["localhost:9200"])
              ->build();
$params = [
'index' => 'social-*',
'body' => [
    'query' => [
        'match' => [ 'message' => 'myProduct' ]
    ],
    'aggs' => [
        'top_10_states' => [
            'terms' => [
                'field' => 'state',
                'size' => 10,
            ]
        ]
    ]
]
];
$response = $esclient->search($params);
								
									use Search::Elasticsearch;

my $esclient = Search::Elasticsearch->new( nodes => 'localhost:9200' );
my $response = $esclient->search(
index => 'social-*',
body => {
        query => {
            match => { message => 'myProduct' }
        },
        aggs => {
            top_10_states => {
                terms => {
                    field => 'state',
                    size => 10
                }
            }
        }
    }
);
								
									require 'elasticsearch'

esclient = Elasticsearch::Client.new

response = esclient.search index: 'social-*', body: {
  query: {
    match: {
      message: 'myProduct'
    }
  },
  aggregations: {
    top_10_states: {
      terms: {
        field: 'state',
        size: 10
      }
    }
  }
}
								

很多公司有同样的苦恼:Walgreens 故事

“不浪费客户的时间”是美国零售商 Walgreens 所坚持的典范。为了坚守这一承诺,他们为其手机应用程序采用 Elasticsearch,取代了原来专有、严格的搜索解决方案。

他们只是使用 Elastic 进行搜索的众多公司之一。探索更多客户示例。

在应用程序中进行搜索还只是个开始

有指标吗?代理还是防火墙日志?网站还是服务器日志?将所有这些集中进 Elastic Stack,以丰富您的搜索用例。

日志分析

快速、可扩展的日志记录分析。

了解详情

指标分析

数字统计:CPU、内存等。

了解详情

网站搜索

为您的站点轻松创建良好的搜索体验。

了解详情

安全分析

快速且规模化的交互式调查。

了解详情

APM

深入了解应用程序的性能。

了解详情